实验1:计算器弹出shellcode

1. 实验条件

  • 虚拟机Winxp系统
  • shell code调试工具SCer.exe
  • 计算器的shell code代码shellcode2020.mybin
  • windbgOllyDbg逆向分析软件

2. 实验原理

  1. shellcode:一段具有某种功能的可执行的汇编代码,是溢出程序和蠕虫病毒的核心。由攻击端发送到被攻击端一方,以获取被攻击端交互式shell的权限。
  2. shellcode常见功能
    • 获取远程shell类
    • 修改系统配置类
    • 中转类
    • 验证类
    • 其他

3. 实验要求

  1. 根据实验软件SCer.exe和shell code代码shellcode2020.mybin,通过windbg逆向分析弹出计算器的漏洞利用详细过程。

            首先,需要在shellcode.txt的开头中加入\xcc,意为设置断点,运行到shellcode前中断。

            将shellcode.txt拖入SCer.exe程序中,并将其转成Bin文件。

            打开windbg,并运行SCer.exewindbg->File->Attach to a Process选取SCer.exe。之后在Command窗口输入g,意为继续执行。

            之后,利用SCer.exe执行shellcode功能执行刚生成的shellcode.txt.mybin,从而可以看到shellcode中断在执行开始前。

            输入t进行步入操作,观察到00e10008处为动态链接库kernel32.dll跳转入口,00e10012为出口。所以在00e10008处采用p指令步过,之后发现计算器被调用,即完成了一次shellcode。

            重新开始,在shellcode开始前的中断处输入db查看数据。可以发现00e1001e开始位置表示的为计算器的命名calc.exe,其存储形式为16进制ASCII。

            继续运行步入00e10001->00e10019->call 00e10003,之后会将其语句的下一行的数据放入栈中(call+标号的语句含义),所以在走过00e10003后,ebx被存入00e1001e,其为存储calc.exe的地址。

            之后调用kernel32.dll,从而调用计算器。

  2. 根据实验软件shellcode2020.exe通过OllyDbg逆向分析弹出计算器的漏洞利用详细过程。

    1. shellcode.exe拖入到OllyICE运行调试,定位到主函数。

      根据数据信息定位00402000,而设置断点进行动态调试。

              步入后发现会将00402000地址存入指针,指针再赋值给eax寄存器,eax再传参给ebx,从而同windbg中相同,传参调用kernel32.dll动态链接库,继而调用calc.exe

  3. 针对上述要求形成实验报告提交,并比较两种方法的区别。

            通过实验和资料,Windbg为指令集操作,属于内核级别调试器,可以调试内核级的代码;Ollydbg具有窗口化操作界面,具有一定的智能分析能力,为用户态调试器。

鸣谢❀参考大佬文章