课本知识简述
这次博客就不按照书上知识点框架做一些叙述了,首先先给一些基本的简述
1、恶意代码分类:计算机病毒、特洛伊木马、恶意移动代码、蠕虫、后门、僵尸程序、内核套件。
2、中国的病毒:CIH、冰河、灰鸽子、证券大盗、机器狗、磁碟机。
3、网络蠕虫内部组成结构:弹头、传播引擎、目标选择算法、扫描引擎、有效载荷。
4、缓冲区溢出攻击:通过精心构造的发向目标系统网络服务的缓冲区数据、攻击者可以破坏目标系统服务中内存结构,并在主机上执行缓冲区包含的攻击指令。
5、后门:允许攻击者绕过系统常规安全控制机制,为攻击者提供访问通道。
木马:看起来是有用的或者善意的目的,但实际上掩盖了一些隐藏恶意功能的程序。
6、恶意代码静态分析技术:扫描病毒→文件识别→脱壳→字符串提取→二进制结构分析→反汇编或反编译→代码结构和逻辑分析。
7、恶意代码动态分析技术:快照对比、系统动态行为监控、网络协议栈监控、沙箱、动态调试。
8、软件安全的困境三要素:复杂性、可扩展性、连通性
9、函数调用步骤:调用、序言、返回
10、缓冲区溢出:栈溢出、堆溢出、内核溢出。
windows消息钩取
在看第九章的时候,看到了windows消息钩取和dll注入的一些信息,顿时有了一些兴趣,因此找了点资料,学习了一点简单的消息钩取和dll注入以达到对其理解。
钩子练习
1、首先我们先尝试练习钩取技术,在这我们用到的是notepad和hookmain.exe。
2、安装好hookmain.exe之后我们运行notepad.exe。我们输入任何值(非q)发现键盘无法输入。
3、在这我们用到了一个非常好用的进程管理工具progress explorer查看进程可以发现keyhook.dll被注入到notepad.exe进程之中
4、关闭hookmain重新输入发现可以输入
5、查看keyhook.dll发现无进程加载该dll说明拆除钩子之后相关进程也卸载了keyhook.dll
调试keymain.exe
1、将该程序载入OD,查找字符串发现关键字符串
2、双击进入相应程序查找相应语句
3、在00401000处下端点,重新载入后,单步知道遇到keyhook.hookstart()函数,此时跟进程序,发现此段程序开始为压入参数的内容,我们发现push 10001020这行代码,为钩子过程的地址,记住此值。
调试notepad进程内的keyhook.dll
1、将notepad载入到OD后运行,此时点开调试设置,将事件中的break on new module勾选,表示在新的调用上断下来。
2、运行hookmain后键盘任意输入,发现程序断在相应位置,此时keyhook被加载到10000000处。
3、双击进入该位置,找到10001020处下断,此时还需注意将之前的事件设置改回来
4、重新载入,输入内容发现程序断在指定位置即钩子过程的位置。
参考程序
1、本实例所用的工具包括OD和progress explorer。OD可以自行去官网下载,progress explorer这款软件是查看进程的利器,可以列出很多详细的信息方便参考,非常推介大家使用。
2、本实例所用到的程序请参考一下链接:https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx