火絨注入


http://www.mengwuji.net/thread-6765-1-1.html

 

進程加載模塊順序 :

ModLoad: 00f60000 00f80000 C:\Users\YIFI\Desktop\AVL\Debug\AVL.exe // 自己本身
ModLoad: 77700000 77879000 C:\WINDOWS\SYSTEM32\ntdll.dll     
ModLoad: 769b0000 76aa0000 C:\WINDOWS\SYSTEM32\KERNEL32.DLL
ModLoad: 76cc0000 76e36000 C:\WINDOWS\SYSTEM32\KERNELBASE.dll
ModLoad: 746a0000 746bc000 C:\WINDOWS\SYSTEM32\VCRUNTIME140D.dll
ModLoad: 5fdb0000 5ff26000 C:\WINDOWS\SYSTEM32\ucrtbased.dll

 

采用加載模塊回調實現

主要步驟:

判斷加載Dll名字  在加載完ntdll之后  因為需要的函數需要在ntdll里面搜索

在Ntdll里面獲取ZwProtectVirtualMemory  LdrLoadDll  ZwTestAlert地址 (win10取ntdll!LdrGetProcedureAddressForCaller)

在ntdll附近分配注入shellcode需要的內存7.調用ntoskrnl!ZwReadVirtualMemory獲取ntdll!ZwTestAlert處頭5字節的數據保存起來

填寫數據到申請的內存上

調用ntoskrnl!ZwWriteVirtualMemory往剛才分配的內存區域里復制配置好的shellcode及shellcode需要的數據。

調用ntoskrnl!ZwProtectVirtualMemory+ZwWriteVirtualMemory+ZwProtectVirtualMemory把{0xE9, ??, ??, ??, ??}(其實是jmp到shellcode處)復制到ntdll!ZwTestAlert處,覆蓋5個字節

一波斷點之后,拿到了shellcode的位置,跟進去就可以看出大致思路(應該是手寫的匯編,這里就不放代碼了)
1.調用ntdll!NtProtectVirtualMemory修改ntdll!ZwTestAlert(這個地址是剛才第7步就預置好的,不是動態獲取的)的保護頁成PAGE_EXECUTE_READWRITE
2.memcpy恢復ntdll!ZwTestAlert頭部的5字節(這5個字節也是第7步預置好的)
3.調用NtProtectVirtualMemory恢復ntdll!ZwTestAlert保護頁
4.調用ntdll!LdrLoadDll完成工作
5.跳回ntdll!ZwTestAlert處

 代碼鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM