2019全国大学生信息安全竞赛初赛PWN-Reverse-WriteUp

Reverse

0x01 easyGo

64位恶意代码


知识点

x64架构被设计成x86的升级,而指令集没有什么显著的区别,这本书年代久远,当时64位系统并没有普及,因此可能本章的内容并不是特别有价值。

x64架构与x86的区别:

  • 所有的地址和指针都是64位的
  • 所有通用寄存器大小变大
  • 通用寄存器的数目增长,新的寄存器位R8-R15
  • x64支持相对指令指针的数据寻址
  • 。。。

C++代码分析


知识点

面向对象的编程语言:和C语言不同C++是一种面向对象的编程语言,采用使用对象的编程模型,将数据与操作数据的函数都封装到对象中,在面向对象中,代码以叫做类Class的用户自定义的数据类型进行组织,类与结构体比较类似,差别在于他们另外保存函数信息而不仅仅是数据,类是创建一个对象的模板,它指定内存中的一个对象的函数与数据布局。

ShellCode分析


知识点

位置无关代码:PIC指不用硬编码地址来寻址指令或数据得代码,shellcode编写者应该使用位置无关代码来提高代码的兼容性。

识别执行位置:Shellcode再以位置无关方式访问数据时需要引用一个基质指针,用这个基址指针加上或减去偏移值,将使它安全访问shellcode中包含的数据,因此一个通用寄存器应该首先载入当前EIP值,作为基址指针来使用,但是指令指针不能之别被软件访问,无法汇编mov eax, eip指令,但是可以使用call/pop指令和fnstenv指令。

使用call/pop指令:当一个call指令被执行使,处理器将call后面的指令地址压倒栈上,然后请求转到被请求的位置执行,这个函数执行完成后会执行一个ret指令,将返回地址弹出到栈的顶部,并将它载入EIP寄存器中,这样的结果使执行刚好返回到call后面的指令。因此shellcode可以通过call后面紧跟一个pop的方法来得到call后指令指针的方法。

加壳与脱壳


知识点

加壳原理:加壳器是将一个可执行文件作为输入,输出一个全新的可执行文件,被加壳的可执行文件经过压缩,加密或者其他转换。多数假客气采用压缩算法压缩原始文件,加壳器通过加密原始可执行文件并且实施一些反逆向技术的实现如防反汇编,反调试以及虚拟化等,加壳器既可以打包整个可执行文件,包括所有的数据与资源节,也可以仅打包代码和资源节。

脱壳存根:可执行程序的入口点直线脱壳存根而不是原始代码,原始程序通常存储在杰克程序的一个或者多个附加的节中,脱壳存根负责脱壳源程序:

  • 将原始程序脱壳到内存中
  • 解析原始可执行文件的所有导入函数
  • 将可执行程序转移到原始的程序入口点

反虚拟机技术


知识点

恶意代码编写者经常使用反虚拟机技术逃避分析,恶意代码可以使用这种技术探测自己是否运行在虚拟机中。

VMware痕迹:VM虚拟环境在系统中遗留了很对痕迹,特别是在安装Vmtools之后,恶意代码可以通过存在于操作系统文件系统、注册表和进程列表中标记痕迹,探测VM虚拟环境的存在。

安装VMtools的主机上通常会运行三个相关进程:VMwareService.exeVMwareTray.exeVmwareUser.exe。恶意代码在进程列表中中搜索带有VMware字符串的进程,就能找到这些进程。

恶意代码的网络特征


知识点

OPSEC-操作安全性:攻击者可以通过多种方法来探测到是否有研究人员对恶意代码进行的测试:

  • 发送带有某个特定连接的针对性访问的网络钓鱼邮件,观察是否有从期望区域之外的IP地址的访问请求
  • 设计一种利用方式,在博客篇评论中创建一个经过编码的链接,从而创建一个私人但是可以公开的感染审计记录
  • 在恶意代码中嵌入一个未使用的域名,观察这个域名的解析记录

Snort检测:https://www.snort.org/

数据加密


知识点

分析加密算法的目的:恶意代码使用加密来达到各种各样的目的,最常见的是加密网络通信,同时,唯一代码也会用加密来隐藏它的内部工作:

  • 隐藏配置信息
  • 窃取信息之前将它保存到一个临时文件
  • 存储需要的字符串
  • 将恶意代码伪装成一个合法的工具

Windows10安装Linux子系统

开启开发者模式:

160个CrackMe练习

前言

160个CrackMe题目量较大,而且有些CM逻辑重复度较高,因此挑选一些比较有价值的题目做一下以提高本🥦(菜)的逆向水平。

0x01 Acid burn

在x64dbg里查找字符串找到相关的错误提示,找到相关调用地址,在附近找到疑似关键跳转的部分下断:

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×