漏洞分析技术实验1:弹出计算器shellcode

漏洞分析技术实验1:弹出计算器shellcode

FindFuner author

实验1:弹出计算器shellcode

1. 实验环境

(1)虚拟机Winxp系统

(2)shellcode调试工具SCer.exe

(2)计算器的shellcode代码shellcode2020.mybin

(4)windbg和OllyDbg逆向分析软件

2. 实验原理

shellcode:一段具有某种功能的可执行的汇编代码,是溢出程序和蠕虫病毒的核心。由攻击端发送到被攻击端一方,以获取被攻击端交互式shell的权限。

shellcode常见功能:获取远程shell类、修改系统配置类、中转类、验证类、其他

3. 实验要求一

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

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

image-20231010100045889

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

image-20231010100148241

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

img

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

img

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

img

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

img

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

img

img

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

4. 实验要求二

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

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

img

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

img

img

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

img

img

5. 实验总结

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

​ OllyDbg 是一个 32 位汇编器级别的分析调试器,只能调试用户态的程序。

​ WinDbg是Windows平台上一款强大的用户态和内核态调试工具,是微软公司提供的免费调试器。WinDbg不仅可以调试应用程序,还可以完成内核调试、分析崩溃传储文件等工作。自从知名的内核调试工具SoftICE停止开发后,WinDbg就成了内核调试领域的首选调试器。因为它是微软公司的产品,在Win平台的兼容性上有着强大的先天优势。Windbg主要还是利用命令行进行一些调试操作,功能强大。

参考链接

https://liuruibin.com/posts/c17e/

  • 标题: 漏洞分析技术实验1:弹出计算器shellcode
  • 作者: FindFuner
  • 创建于 : 2023-10-10 01:02:06
  • 更新于 : 2023-11-06 15:46:59
  • 链接: https://nnna48.github.io/2023/10/10/漏洞分析技术实验一/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。