1.销声匿迹——认识rootkit
定义:rootkit是一组工具包,能够将一组无法检测的程序或代码长久且可靠的安装于目标主机上。
功能:远程命令、控制和软件窃听(嗅探)。
rootkit本身并不邪恶,甚至可以用来做计算机取证。
工作方式:修改二进制代码(exe文件等等),程序本身内置的后门(所谓的复活节彩蛋),间谍软件对其他软件的修改(劫持浏览器),对源代码的修改(开源)。
另外,rootkit和软件的exploitation不同,更不是病毒。
攻击型rootkit技术:绕过防火墙和IDS(HIPS、NIDS)。
a.主动攻击 对系统硬件和内核进行修改。
b.被动攻击 对数据的储存和传输模糊化(数据加密,将解密密钥放在非易挥发硬件存储器中,BIOS、闪存、EEPROM)。
2.破坏内核——小试牛刀
内核组件:
a.进程管理 内存中的数据结构记录了所有的进程和线程,通过修改数据结构可以隐藏他们。
b.文件访问 修改这些文件访问接口攻击者便可隐藏文件和目录。
c.安全性 修改操作系统安全性约束的部分代码可以改变所有安全机制。
d.内存管理 了解内存管理的映射机理有利与对调试器和取证软件的数据瘾写。
提示:为了便于管理和开发,rootkit的功能应该尽量的模块化。另外,类似于一夫一妻,一个系统只装一个rootkit(否则会出现冲突)。
windows驱动程序编程:
DDK足矣,现在用WDK,除了兼容性更强外,貌似没什么太大的区别。
值得一提的是,我们开发时用checked编译环境,而最终完成时用free环境。
实践:
建立文件SOURCES,内容如下:
TARGETNAME=TESTDRIVER
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=test.c
TARGETNAME变量应该起一些不易被发现的名字,使之看上去想一个真正的设备驱动,看看系统的设备驱动相信就能获得很多灵感。
TARGETPATH通常设置为OBJ。
TARGETTYPE通常设置为DRIVER
SOUR