03 2017 档案
Svchost进程和共享服务病毒原理
摘要:1. svchost的由来 Windows系统服务现在可以分为独立进程和共享进程 在windows Nt中, 只有服务管理器SCM(service.exe)有多个共享服务. 随着系统的服务增加,为了增强系统性能于是 在windows2000开始将很多服务做成共享方式并且由svchost.exe启动
阅读全文
服务劫持
摘要:1.简介 病毒以服务的方式运行最大的好处就是不容易被动态调试, 但是很多服务型病毒并不会直接以服务形式运行,因为很容易被发现. 所以一般都通过劫持 服务的技术来使正常服务与病毒服务程序关联 2.原理 当服务创建时会操作注册表, 其中服务信息存在于: HKEY_LOCAL_MACHINE\SYSTEM
阅读全文
利用BHO实现浏览器劫持
摘要:1.简介 BHO 全名: Browser Helper Object 即浏览器辅助对象 它是微软推出的作为浏览器对第3方程序开发的交互接口的标准. 通过这个接口就可以编写代码来拓展浏览器, 获取浏览器行为等. 因此同样给了恶意代码的可乘之机. 恶意代码可以通过注册插件等手段来对浏览器进行劫持. 借助
阅读全文
动态反调试
摘要:1.基于异常的反调试 (1) 基本原理: 注册SEH后, 正常情况下发生异常会转入SEH处理流程, 但是如果这时处于被调试状态则异常事件会先发给调试器. 基于这个原理就能探测到进程是否是 被调试运行. (2) 基于int 3 断点异常反调试 故意隔一段代码就调用一个会触发int 3异常的函数, 而且
阅读全文
常用的静态反调试技术及其规避方法
摘要:静态反调试虽然容易绕过,但是由于种类繁多,如果病毒结合了很多种静态反调试而对其了解不多的话,也不好办,所以了解更多的 方法不至于束手无策. 1.利用PEB的BeingDebugged 字段 已知fs:[0x30]指向PEB, PEB地址+0x2 处的一个字节的数据表示是否在被调试,如果是1则是,0则
阅读全文
teb, peb,seh 结构
摘要:1.teb:线程环境块 重要字段: 以fs:[0]为基址,fs:[0]的值即为teb的地址, 可以将fs理解为指向teb,后面的0是个字节级别的偏移,虽然并不完全正确,但方便记忆 +0x0 *NtTib 是个_NT_TIB 结构 +0x18 *teb==fs:[0] +0x30 *peb _NT_T
阅读全文
线程本地存储tls
摘要:1.动态tls介绍 windows为每个进程分配一组线程本地存储的标记. 至少有64个标记,如果程序使用超过了64个将动态增长. 这些标记有2种状态: free和inuse. 所有标记的状态对该进程中所有线程都是可见的. 程序中每个线程会对应每个标记一个slot,这个slot是个lpvoid的值 程
阅读全文
注入技术--远程线程注入
摘要:1.简介 最经典的注入方式, 容易实现但是监控LoadLibrary系列函数即可 还可以注入中转,如先将模块注入到系统进程中,利用系统进程再次注入到目标进程,然后从系统进程卸载掉模块 2.代码
阅读全文
注入技术--消息hook注入
摘要:1.简介 消息钩子注入. 对有窗口的进程. 容易被检测SetWindowsHookExW的参数1如果空,则卸载钩子 2.代码 未完待续...
阅读全文
注入技术--注册表注入
摘要:1.简介 最简单的注入, 注册表注入, 容易被发现,会被注入到所有加载user32.dll的进程中 2.代码
阅读全文
注入技术--APC注入
摘要:1. APC即远程过程调用, 分为内核级和用户级,在ring3层中,使用用户级的APC即可进行注入dll 但是不能针对已有进程 2. 未完待续...
阅读全文
注入技术--注入到会话0进程
摘要:1.简介 在nt6.0 内核以上,windows对系统重要进程和服务进程划分到一个会话中,该会话为会话0. 用户登陆后分配一个会话,在该用户启动的的进程将归于会话1 或者更多(多用户登陆). 此时os会对这会话0和其他会话中的进程之间的操作进行限制. 如会话1中的进程不能容易创建远程线程注入dll
阅读全文
windows64 位 环境 与32位 环境
摘要:1. LLP64 数据模型 数据模型 short int long longlong 指针 操作系统类型 ILP32 2 4 4 8 4 win32 LLP64 2 4 4 8 8 windows 64 位 LP64 2 4 8 8 8 UNIX 64 位 2.WOW64 参考: https://m
阅读全文
hook技术--优化代码hook
摘要:. 1.简介 在代码hook中,由于频繁的进行hook和unhook,而且又加上多线程的一些不可靠的因素,会使程序执行效率降低而且可能会导致错误,即 多线程对其hook和unhook导致不稳定的可能性增加, 因此需要找一种不需要频繁进行hook和unhook的方法. 而windows的一些API提供
阅读全文
hook技术--代码hook
摘要:1.简介: 对于IAT hook 方法,它只能hook掉在iat中的API,如果是通过动态加载的就不行了 因为动态加载的dll的API不在iat中,而是动态生成的. 这时可以预先加载该dll和API,并对API前几个字节进行保存然后修改成 跳转到自己的某函数中,然后进行一些操作后可以再跳回到原来的A
阅读全文
hook技术--IAT hook
摘要:1.简介 当程序运行后IAT表才会被系统根据pe文件的导入表等信息填充该IAT字段, 填充后的IAT的函数地址是对应模块加载后真正的函数地址,程序中对dll中 的导出函数的调用也是通过该IAT的记录来调用的.因此可以通过注入dll后, 通过dll中的代码修改IAT表的记录,来实现hook. 原来的调
阅读全文
注入技术--远程代码注入
摘要:1.简介: 代码注入和远程线程注入dll类似,但是隐蔽性更好,因为不产生文件.但是可靠性差,更加复杂 代码注入时注入的代码部分是从本进程空间复制过去的,所以不能出现依赖于本进程的数据存在. 所以注入的代码中数据,地址都是动态生成的, 因此可以考虑将这些数据作为参数传递给注入的代码. 将代码和数据都注
阅读全文
注入技术--LSP劫持注入
摘要:1.原理 简单来说,LSP就是一个dll程序. 应用程序通过winsock2进行网络通信时,会调用ws2_32.dll的导出函数,如connect,accept等. 而后端通过LSP实现这些函数的底层. 简单来说就是调用winsock2提供的函数时会调用对应的LSP提供的SPI(服务提供者接口)函数
阅读全文
注入技术--修改pe文件导入表进行注入
摘要:1.修改导入表,即添加一个新的导入表描述符及其iat,int. 这样系统加载该pe文件时将自动加载添加的dll,从而实现dll注入 2.思路: 可以手工修改,但是复杂程度一点也不比写代码低,而且低效. 通过代码实现可以一劳永逸. 新增一个节来存储新的导入表. 其实也可以在原来的pe文件找空隙插入进去
阅读全文
内存
摘要:一. 虚拟内存 n api详解: 分配: n VirtualAlloc n VirtualAllocEx n VirtualAllocExNuma n 释放 n VirtualFree n VirtualFreeEx 实际上就是动态内存分配, 和c语言的malloc不同, 分配后数据清0,释放后数据
阅读全文
I/O
摘要:五. I/O 1. 打开文件和关闭文件 HANDLE file = CreateFile(TEXT("F:\\c_project\\vs2015\\ConsoleApplication1\\系统编程.c\\文件.c"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); 返回句柄, 参数:文件名, 打开方...
阅读全文
进程
摘要:进程权限问题安全token, sid,安全描述符,所有者标识. acl,ace luid 安全令牌, 筛选的令牌 token 相关api: v OpenProcessToken 3个参数1.进程句柄,访问方式,token句柄地址 v OpenThreadToken 类似 v AdjustTokenG
阅读全文
线程
摘要:1.创建: HANDLE CreateThread( PSECURITY_ATTRIBUTES psa, DWORD cbStackSize, PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam, ...
阅读全文
内核对象
摘要:1. 定义: 内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问。在此数据结构中少数成员如安全描述符和使用计数是所有对象都有的,但其他大多数成员都是不同类型的对象特有的。内核对象的数据结构只能由操作系统提供的API访问,应用程序在内存中不能访问。调用创建内核对象的函数后,该函数会返回一个句柄,它标识了所创建的对象。它可以由进...
阅读全文
异常处理
摘要:windows 结构化异常处理包括了2个方面:终止处理和异常处理. 本文讨论终止处理 1.终止处理程序 基本语法: __try { //可能会发生异常的代码部分 } __finally { //终止处理 } 在这段代码中,在编译器和操作系统协同下,try中发生异常,return,goto等非强制退出
阅读全文
文件格式收集
摘要:1. M3U文件格式 该格式文件是个媒体文件的列表文件, 作为 媒体播放器的播放列表文件. 直接用编辑器打开即可查看该文件格式. 例如: 该文件格式比较简单, 以#EXTM3U 标记开头, 然后下面就是媒体文件列表. 例: 2.
阅读全文
|
|
|