随笔分类 -  《恶意代码实战分析》

简要记录《恶意代码实战分析》一书的随书笔记
摘要:利用虚拟网卡MAC地址 MAC地址的前三个字节标识一个供应商,而以00:0C:29开始的MAC地址与VMwara相对应。恶意代码只需要检测模拟网卡MAC地址是否在VMware范围中即可 绕过VMware痕迹探测 反虚拟机指令 绕过VMware痕迹探测 反虚拟机指令 阅读全文
posted @ 2018-11-20 12:43 峰中追风 阅读(220) 评论(0) 推荐(0)
摘要:调用函数检测方式 IsDebuggerPresent(检测本进程) 检查进程环境块(PEB)中IsDebugged标志 如果没有被调试就返回0,如果调试附加了进程,函数返回非零值 CheckRemoteDebuggerPresent(检测其他进程) 这个函数和上面的函数检测的原理是一致的,但是他可以 阅读全文
posted @ 2018-11-20 12:42 峰中追风 阅读(697) 评论(0) 推荐(0)
摘要:1.GINA拦截 在Windows XP系统中,恶意代码利用微软图形识别和验证界面(GINA)拦截技术窃取信息,GINA的目的就是微软让合法的第三方通过添加代码来自定义登陆过程。恶意代码就是利用GINA对第三方的支持来加载窃密器 具体的图形(类似于HOOK): 击键记录(这里并不是SetWindow 阅读全文
posted @ 2018-11-20 12:39 峰中追风 阅读(210) 评论(0) 推荐(0)
摘要:Dos攻击:拒绝服务攻击,就是合理的用运用服务请求来占用过多的服务资源,从而使用户无法得到服务响应,单一的dos就是一对一的方式,但是随着计算机的发展,计算机处理数据的能力增长,这样使得dos攻击难度增加,所以就出现了DDos 分布式拒绝服务攻击。就是利用更多的肉鸡来发起攻击,使得攻击规模增大。 D 阅读全文
posted @ 2018-11-20 12:39 峰中追风 阅读(274) 评论(0) 推荐(0)
摘要:AppInit_DLL(利用user32.dll) 通过AppInit_DLL特殊的注册表项,这样可以获取DLL的加载,因为AppInit_DLL中的DLL会在进程加载User32.dll时被加载 由于很多程序都是加载User32.dll,所以这些进程也会加载AppInit_DLL,恶意代码编写者通 阅读全文
posted @ 2018-11-20 12:37 峰中追风 阅读(344) 评论(0) 推荐(0)
摘要:进程替换的原理: 1.先利用CreateProcess来创建一个进程,但是在创建的过程中需要以挂起的方式去创建 2.进程被创建后,恶意代码就需要将进程的内存空间进行替换,通常会使用ZwUnmapViewOfSection来释放指向的内存 3.原宿主的内存被释放后,需要用VirtualAllocEx为 阅读全文
posted @ 2018-11-20 12:36 峰中追风 阅读(499) 评论(0) 推荐(0)
摘要:APC注入可以让一个线程在它正常的执行路径运行之前执行一些其他的代码,每一个线程都有一个附加的APC队列,他们在线程处于可警告的时候才被处理(WaitForSingObjectEx,SleepEx) 如果程序在线程可警告等待状态时候排入一个APC队列,那么线程将开始执行APC函数,恶意代码则可以设置 阅读全文
posted @ 2018-11-20 12:35 峰中追风 阅读(1087) 评论(0) 推荐(0)
摘要:我们可以调用RaiseException来产生额外的软件异常 SEH的位置: 操作系统会检查FS段寄存器,这个段寄存器会有一个段选择子,使用段选择子可以查找线程环境快TEB,TEB中第一个数据结构是线程信息块(TIB).TIB中第一个元素就是SEH的链的指针 SEH异常处理结构类似于栈操作,新的异常 阅读全文
posted @ 2018-11-20 12:34 峰中追风 阅读(173) 评论(0) 推荐(0)
摘要:1.软件断点 但是软件断点的缺点就是,当我们调试自身代码的时候,如果有修改自身代码的操作,就会将我们提前好的int 0xCC,进行无意的修改,这样断点也就无法正常断下 2.硬件断点 所以相对于这一点,硬件断点的优点就显而易见 当我们在地址0xXXXXXXX设置一个断点,处理器不会关心地址所在储存的内 阅读全文
posted @ 2018-11-20 12:33 峰中追风 阅读(208) 评论(0) 推荐(0)
摘要:1.OD有loaddll.exe的功能,可以帮我们直接定位到dllmain函数 我们需要将其他硬件断点直接关闭,然后F9运行程序 在 然后在dll中可以看函数名称及其导出调用 然后在dll中可以看函数名称及其导出调用 阅读全文
posted @ 2018-11-20 12:32 峰中追风 阅读(825) 评论(0) 推荐(0)
摘要:除零异常是由硬件抛出 内存无效的访问是由操作系统抛出 也可以在代码中使用RaiseException调用,显式抛出异常 这里也就说明了异常被处理完成之后如何回到我们的代码流继续执行代码(通过栈帧) 当然漏洞的利用也可以通过将栈发生溢出,然后主动抛出一个异常,代码流也就会主动跑到刚刚溢出的异常处理函数 阅读全文
posted @ 2018-11-20 12:31 峰中追风 阅读(481) 评论(0) 推荐(0)
摘要:1.Windows使用两种处理器特权级别:1.内核 2.用户 2.几乎所有的代码都在用户模式,除了操作系统和硬件驱动 3.用户模式不能直接访问硬件,它被限制只能访问CPU上所有寄存器和可用指令的一个子集,所以我们为了改变硬件或者修改内核中的状态,必须依赖API 4.进入内核模式的方式:SYSENTE 阅读全文
posted @ 2018-11-20 12:30 峰中追风 阅读(228) 评论(0) 推荐(0)

___________________________________________________________________________________________没有白跑的路