摔不死的笨鸟
长期活跃更新,如果你觉得我的博客不错,那就订阅吧。这样我就能多买两本书看,给你写质量更高的博客。
展开
-
Rootkit对抗AV的方式
Rootkit对抗AV的方式原创 2024-03-04 17:08:13 · 85 阅读 · 0 评论 -
绕过PPL机制窃取凭证
使用LSA防护Mimikatz窃取密码攻击原创 2023-11-14 18:17:03 · 165 阅读 · 0 评论 -
EDR查杀原理曝光及免杀绕过
为了保护系统的安全和稳定性,从Windows 64位起,Windows机器有两种不同的运行模式:用户模式和内核模式,用户模式即我们平时使用各种应用程序时所处的交互模式,应用可以访问CPU和内存等资源,维持自身的正常运转。Meterpreter绕过了磁盘上基于签名的检测和使用系统调用的Shellcode检测,但在运行不到一分钟后又被报毒,这是一个基于行为的检测,由额外的DLL文件触发,通过普通 Win32 API 和反射 DLL 注入技术加载。从我目前的知识和观点来看,对此问题的非常简单的回答是——不!原创 2019-09-22 14:03:43 · 973 阅读 · 1 评论 -
python逆向还原dnspy反编译的C#算法
算法逆向原创 2023-09-01 13:57:35 · 1440 阅读 · 0 评论 -
PECompact3.0.2.2壳内API序列及指令序列
基于Pin实现指令集采集和API序列采集,对壳的原理进行研究。原创 2023-06-28 10:07:08 · 187 阅读 · 0 评论 -
capstone实现自定义反编译器
capstone反汇编原创 2023-03-03 17:10:17 · 635 阅读 · 0 评论 -
X64dbg脚本实现自动DUMP运行中解密出的PE文件
X64DBG脚本转载 2022-12-19 09:29:56 · 1239 阅读 · 0 评论 -
如何处理C#混淆
C#混淆基本可以过所有静态特征检测,C#的软件经常被用来写加载器,勒索和窃密有很多是C#语言。有些C#的混淆在基本信息上可以看到,当然这是一种比较低级的混淆方法,大多数作者会抹去这个信息字符串。图片来自于深信服的分析报告:https://www.sangfor.com/blog/cybersecurity/new-threat-mallox-ransomwarede4dotde4dot工具可以识别以下几种类型的混淆,并且可以还原一大部分符号信息。Agile.NET (aka CliSecure原创 2022-05-31 17:48:38 · 3820 阅读 · 0 评论 -
DLL死锁产生原因与调试方法
产生死锁的四个必要条件:互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。BOOL DisableThreadLibraryCalls([in] HMODULE hLibModule);DisableThr原创 2021-12-24 08:50:35 · 1532 阅读 · 0 评论 -
X64dbg正确使用姿势
X64DBG是目前来说64位windows操作系统最主流的调试器,这里简单介绍下一些需要注意的使用姿势。1、取消系统断点。默认是系统断点,可以打开,选项-设置把系统断点勾掉,只断入口断点和TLS回调函数。2、带参数调试进程。文件-改变命令行。3、寄存器上右键高亮,可以高亮寄存器,阅读shellcode时比较容易分辨寄存器值变化。或者使用快捷键H键。4、循环指令中设置条件记录断点的方法(脱解密壳或逆算法基本必用):指令上首先F2下断点,然后在断点界面右键Edit,设置暂停条件。并记录寄存器情况原创 2021-11-25 19:48:28 · 10656 阅读 · 0 评论 -
CobaltStrike攻击用到的二进制文件
HTML Application Attack生成的是一个hta文件。运行后启动powershell,执行一大坨base64编码的代码。第一段解密之后的powershell形如:s=New−ObjectIO.MemoryStream(,[Convert]::FromBase64String("一坨base64"));IEX(New−ObjectIO.StreamReader(New−ObjectIO.Compression.GzipStream(s=New-Object IO.MemoryStre原创 2021-08-24 17:53:32 · 325 阅读 · 0 评论 -
InterNetOpenA函数会产生的行为
原创 2021-08-17 17:28:33 · 575 阅读 · 0 评论 -
JavaScript逆向
JavaScript 显示数据JavaScript 可以通过不同的方式来输出数据:使用 window.alert() 弹出警告框。使用 document.write() 方法将内容写到 HTML 文档中。使用 innerHTML 写入到 HTML 元素。使用 console.log() 写入到浏览器的控制台。JS在线调试http://js.jsrun.net/newJS本地调试谷歌浏览器火狐浏览器 开发者模式快捷键 F12按钮从左往右,功能依次是Resume【F8】继续执行,直到下个断原创 2021-07-16 10:42:55 · 431 阅读 · 1 评论 -
软件壳的原理与DUMP修复原理
DUMP修复原理根据上面的分析我们基本上得到了一个这样的思维。Dump程序要做的事分几个基本的步骤:1.在系统中找到目标进程(枚举进程)2.在进程中确定进程的大小imagesize3.把进程中的数据保存到文件4. 把相对虚拟地址(RVA)和文件地址对齐(RA)。科普一下:在文件中要节约空间,把数据紧密的存储在一切,而靠节表在load到内存中的时候,把在文件中的不同数据分别映射到不空内存空间中,而不足的地方就用0填充。但是当我把这些数据从内存中完完整整的dump下来的时候,我们同样把这些0也原创 2021-07-15 14:13:12 · 267 阅读 · 0 评论 -
rhett知乎文章摘要
源于静态分析的技术:控制流图,数据流分析,依赖图,支配树。静态分析一个重要的发展方向是结合符号执行来提取动态信息。(从这里也可以看出来,特征抽取真的是核心部分),然而,符号执行不是真正的执行,一方面是符号计算的模拟能力不够,另一方面是遇到分支路径的时候,存在路径选择和分支爆炸的问题。检测的前提是分析,样本分析是检测工作的基本功,检测工作是样本导向的,不具体的分析样本检测工作就会跑偏。类似编译器的优化,优化是先分析再转换,检测是先分析再检测。我经常跟团队里的同学说,当你不知道该干嘛的时候就去分析样本,样本转载 2021-07-15 11:14:55 · 117 阅读 · 0 评论 -
现有安全工具对进程加载dll模块的数字签名检测的问题
最近在做一个检验全进程dll签名情况的程序。发现了现有安全工具一些比较沙雕的行为。PChunter首先点名PChunter,查找没有数字签名模块,但是C:\Tools\Sanbox\SbieDll.dll我看了下明明具有数字签名,而且签名还正常,它是沙箱的一个正常dll。证据确凿,有什么好狡辩的。Procexp用微软自己出的procexp检查进程的模块签名情况时,发现一些db都往模块里搞。看了下文件的确只是个DB,根本不是PE格式。当然还有一些PNG格式也在模块列表中,服。伟大发明看我的工具原创 2021-07-14 17:53:17 · 801 阅读 · 0 评论 -
微软本地CryptAPI加密算法逆向速查
if (CryptAcquireContextW(&phProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) //参4是加密类型,参五是Flag{ if (CryptImportKey(phProv, pbKEY, KEYLEN, 0, 0, &phKey)){//导入KEY,参数2为密钥 result = CryptDecrypt(phKey, 0, 1, 0, pData, pDataLen);//参5是待加密数据,解密原创 2021-01-15 16:26:55 · 263 阅读 · 1 评论 -
Encode与Decode
URL编解码站长工具ShellCode提取复制到所有文件————修改JS解混淆http://deobfuscatejavascript.com/#https://lelinhtinh.github.io/de4js/原创 2021-01-08 10:25:35 · 160 阅读 · 1 评论 -
实现IDApython自动化加载模块PDB
分析IDA加载PDB的过程分析正常的 File---->LoadFile-----PDBfile操作的实质:本文的目的就是去除手动操作,实现IDApython自动加载PDB的脚本程序。IDA加载PDB有两种方式:一、使用vc\msdia90.dll这个DIA的API接口函数(优先)二、使用Dbghelp.dll中的函数。(备用方式,老版本用)图中可以看到必须安装VC2008可再发行的x64安装包第一种方式才会成功。这里是用的是第二种PDB加载方式——dbghelp加载方式。而且过程中出原创 2020-07-24 16:49:07 · 1372 阅读 · 0 评论 -
绕过BIOS/UEFI固件写保护写入SPI闪存
针对Bootkit:LoJax或MosaicRegressor和TrickBot等开始进行固件感染方式的病毒逐渐增多而作笔记整理。对主板上的SPI闪存芯片中存储的UEFI固件的所有请求都将通过SPI控制器,该控制器是Intel平台上的Platform Controller Hub(PCH)的一部分。可以通过PCI设备驱动访问PCI总线配置空间可以获取PCH的值。绕过BIOS/UEFI固件写保护写入SPI闪存用I/O命令访问PCI总线配置空间BIOS控制寄存器BIOS_CNTL攻击者如何感染UEFI固件?原创 2020-12-14 20:33:03 · 1856 阅读 · 0 评论 -
无文件攻击的种类
在安全领域,无文件攻击意味着极其严重的威胁。“无文件”一词,是在探讨绕过恶意文件检测技术的方法时诞生的术语。“无文件攻击”只是一种攻击策略,其出发点就是避免将恶意文件放在磁盘上,以逃避传统安全软件的检测。本知识领域牵涉到病毒逆向分析和渗透测试两大版块。无文件攻击的种类病毒名称漏洞类型CVE编号漏洞位置Office漏洞CVE-2017-0199内嵌OLE2LINK对象Office漏洞CVE-2017-11882(噩梦公式一代)公式编辑器EQNEDT32.EXE原创 2020-12-01 19:52:13 · 2000 阅读 · 4 评论 -
IDApython在恶意软件分析中的应用
IDA具有yara的批量识别能力,虽然速度上差了点,但是却有着强大的静态分析处理能力接口,病毒分析师可以通过逆向分析或者动态调式获取关键加解密处的代码,使用IDApython来批量分析和处理样本得到具有价值的威胁情报信息。IDA在恶意软件分析中的主要作用是利用IDA无界面版本idat64.exe的强大自动化分析能力去批量处理家族样本,静态上解密或者去混淆,最终以得到病毒样本的URL和IP地址为主要价值信息使用的前提是:一、病毒家族样本的加密函数固定有规律有通性。二、病毒样本的加密函数比较简单或者标准原创 2020-11-24 17:18:45 · 458 阅读 · 2 评论 -
用Bootkit病毒来讲整个Windows启动过程
Windows开机过程流程图Bootkit进化史BIOS加电自检MBR加载VBR加载IPL加载NTLDR加载Windows内核ntoskrnl初始化流程图关于Windows的启动过程,最详细最全面的介绍在2005年的eEyeBootRoot开源时的技术文档中。eEyeBootRoot是WIndows7时代很多MBR感染病毒的鼻祖,也是人们开始研究Windows启动过程的热点时期。Bootkit进化史在《Rootkits And Bootkits Reversing Modern Malware原创 2020-07-22 12:02:23 · 1239 阅读 · 1 评论 -
GDT、LDT和IDT
三个重要的系统表GDT、LDT和IDT 首先说明的是,这三个表是在内存中由操作系统或系统程序员所建,并不是固化在哪里,所以从理论上是可以被读写的。这三个表都是描述符表。描述符表是由若干个描述符组成,每个描述符占用8个字节的内存空间,每个描述符表内最多可以有(8K)8129个描述符。描述符是描述一个段的大小,地址及各种状态的。描述符表有三种,分别为全局描述符表GDT、局部描述符表LDT和中断描述符表IDT。GDT表与IDT表在整个系统中,全局描述符表GDT只有一张(一个处理器对应一个GDT),GDT原创 2020-11-13 15:44:13 · 2074 阅读 · 0 评论 -
TEB与PEB结构定位、PE结构导入表与导出表定位
TEB定位 PE导入表导出表定位PEB定位到模块基址PE定位到导出表PE定位到导入表对于windows可执行文件的研究与学习,学会TEB PEB结构以及PE结构是必经之路。PEB定位到模块基址使用Windbg和OD同时分析软件线程环境块 TEB+0X30==PEB ProcessEnvironmentBlock进程环境块三个入口点我们取了第三个...原创 2019-08-10 17:39:49 · 852 阅读 · 0 评论 -
虚拟机操作系统下载模块PDB文件
操作环境:虚拟机里全新的操作系统Win7目的:安装Windbg并下载该系统中对应模块的PDB文件解决问题:需要调试某操作系统的一模块,但是在真机Windbg却不能下载其他操作系统的不同型号的模块PDB信息。一、搭建Windbg运行环境。全新的操作系统根本不具有Windbg的运行环境,虽然系统中自带有Windbg,但是运行会出现缺少api-ms-win-crt-string-l1-1-0.d...原创 2020-11-04 19:51:23 · 78 阅读 · 0 评论 -
FindNextFileW的Ring3到Ring0过程分析
FindNextFileW在微软官方看到应该是在kernel32.dll中实现,但实际调试中发现是在kernelBase.dll中。微软官方文档也不可信啊。打开IDA反汇编并加载PDB信息,可以看到_SEH_prolog4函数的使用。遂先学习下这个知识点。SEH的prolog4函数与epilog4函数如图所示,是FinNextFileW函数刚断下来时的堆栈以及信息。可以看到这个函数的栈帧结构是有点不一样的。首先push了四个参数:堆栈大小、scope table entry、_except_ha.原创 2020-11-04 17:54:24 · 271 阅读 · 0 评论 -
Windows驱动的加载顺序
开机内核初始化后,加载顺序前10榜没几个是看起来正常的驱动。是因为这些看起来.dll后缀的驱动比较底层,甚至虚拟机都没有办法模拟,所以比较特别。Windows驱动分为Boot Start、System Start、AutoStart和Demand Start四种启动类型,分别代表驱动注册表中Start键值的0\1\2\3,驱动加载时优先加载Boot Start型驱动,按照0、1、2、3类驱动启动类型来加载驱动。优先加载的驱动优先获得到更早的权限,拿到主机的权限。2017年出现的Rootkit狼人杀就把.原创 2020-11-02 19:45:11 · 2194 阅读 · 0 评论 -
驱动回调的实现与逆向
PsSetCreateProcessNotifyRoutineEx函数创建进程回调NTSTATUS status = PsSetCreateProcessNotifyRoutineEx((PCREATE_PROCESS_NOTIFY_ROUTINE_EX)ProcessNotifyExRoutine, FALSE);第一个参数是真实处理的回调函数,第二个参数是BOOLEAN Remove。为True时即是卸载回调函数。VOID ProcessNotifyExRoutine(PEPROCESS pEP原创 2020-10-27 16:16:30 · 609 阅读 · 0 评论 -
逆向自己写的键盘过滤驱动
闲来无事,逆向一下自己写的驱动,加深下认识。 这里把逆向的驱动分为Debug版,Release版和加载PDB版。三个版本的特点是: Debug版不会被编译器优化,比较适合学习逆向。 Release版是发布对外的,逆向时很多结构体和反汇编都被优化变形了,只能说是有原来代码的特征。 加载PDB版就几乎等同于阅读源码了,没什么挑战。 所以这里学习重点讲的是逆向Debug版编译的自己的驱动。Debug版 首先拖入IDA识别的DriverEntry并不是我们实际的DriverEntry原创 2020-10-22 16:03:13 · 327 阅读 · 0 评论 -
恶意软件分析——RootKit高级分析技术
RootKit的运行特点是运行之后不退出、不创建其他进程,进程行为几乎完全模仿正常程序。普通方法很难察觉到它们的病毒目的。这类病毒的目的多是:1.密码窃取病毒 会进行密码爆破,cookie偷取,键盘记录,DNS枚举,长期藏匿于电脑中一旦得手就给远程服务器连接。2.感染型病毒 ...原创 2019-12-16 16:37:29 · 869 阅读 · 0 评论 -
THREADINFOCLASS结构体与FILE_INFORMATION_CLASS结构体
THREADINFOCLASS是一个枚举结构,其值旨在作为ZwQueryInformationThread和ZwSetInformationThread函数的输入。 查询或设置不同类型的信息选择不同的值。自从Windows NT 3.51的设备驱动程序工具包(DDK)起,THREADINFOCLASS枚举的C语言定义已在NTDDK.H标头中公开可用。 它支持ZwSetInformationThr...原创 2019-10-10 15:48:21 · 1917 阅读 · 0 评论 -
Virut感染型病毒查杀工具
职业病毒分析师的职责是为安全运营团队提供有力的后台支持,并能处置突发的大型感染病毒和勒索病毒。下面是自己写的Virut一款感染型病毒的修复工具。该工具没有遍历文件,只是修复了C盘下被病毒感染后的一个文件:hypertrm.exe.V。有兴趣的可以研究交流。// VirutRemoveTool.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Windows.h>#define BYTELENGTH 1024int Restor原创 2020-08-25 14:49:05 · 2648 阅读 · 0 评论 -
GandCrab4.0勒索病毒解密工具
GandCrab介绍GandCrab是由一个十分猖狂的团队研发的勒索软件病毒,2018年开始活跃,一年内勒索了将近20亿美元。2019年可谓臭名远扬的勒索软件之王:GandCrab背后的运营团队在俄语论坛中发表官方声明称,GandCrab勒索病毒将停止更新。为什么停止更新了呢?答案竟是,钱赚够了。然而这么猖狂的犯罪团伙,至今都没有被找到幕后团伙是谁。这就是GandCrab勒索软件的神奇传说。今天分享就分析个去年写的GandCrab v4.0工具。GandCrab勒索软件分析白名单目录:\Pr原创 2020-09-21 19:36:25 · 1312 阅读 · 1 评论 -
Rootkit原理——ROOTKIT ON LINUX X86 V2.6
Linux2.6内核的LKM Rootkit原理LKM Rootkit之HOOK系统调用表一、修改系统调用表的地址二、path系统调用过程的二进制代码三、滥用DR寄存器非LKM RootkitRootkit的常见功能Rootkit的主要技术参考文献LKM Rootkit之HOOK系统调用表一、修改系统调用表的地址Linux机制HOOK系统调用表方式sys_call_table[]导出sys_call_table[__NR_open] = (void *) my_func_ptr;原创 2020-09-01 20:16:05 · 302 阅读 · 0 评论 -
VB病毒逆向分析
VB程序只有一个窗体的话则从窗体form的load过程开始执行,如果有多个窗体则从设计的第一个窗体的Form_Load过程开始执行,因为没有main过程,所以判断Form_Load就是VB应用程序的入口点了。Native编译的VB病毒程序可以使用OD调试。...原创 2020-06-21 10:51:14 · 382 阅读 · 0 评论 -
IDA同步x32dbg远程调试分析虚拟机内恶意软件
演示环境:主机:win10目标虚拟机:win7用得到的工具: IDA,0D,ret-sync插件IDA远程调试虚拟机内可执行程序把IDA的dbgsrv目录下的win32_remote.exe拷贝到虚拟机里。该程序默认获取的是系统第一个适配器的IP地址。我虚拟机里安装了有三个网络适配器。即便禁用网络适配器也没用,win32_remote.exe默认获取的是系统第一个适配器的IP地址,所以其他两个必须通过设备管理器卸载。通过设备管理器卸载其他的网络适配器后,只保留一个本地连接。虚拟机设置为N原创 2020-09-02 19:18:28 · 886 阅读 · 0 评论 -
恶意软件分析——逆向工具介绍
使用ProcessHacker查看进程的权限。查看进程的父进程,原创 2019-12-10 20:44:34 · 823 阅读 · 0 评论 -
CreateFile函数执行的全过程
Kernel32.dll中的CreateFile。在Kernelbase32.dll中将打开的文件路径添加/??/对应于经过CreateFileInternal后的__GSHandlerCheck。最终调用NtCreateFile函数。来到了ntdll.dll。原创 2020-08-04 20:18:24 · 1234 阅读 · 0 评论 -
IDApython使用RPC通信批量处理模块信息
IDApython非常强大,但是每次执行一次IDApython只能输出一个模块的信息。如果想同时处理多个模块的信息,python的RPC服务通信机制可以作为一个不错的选择。这里主要讲的是使用RPC通信需要注意的一些问题,防止逆向人员像我一样踩坑。具体实现代码可以参考:https://blog.csdn.net/weixin_30955617/article/details/95011695PYTHON3的可以看这篇:https://www.jianshu.com/p/9987913cf734主机使原创 2020-06-19 16:31:23 · 317 阅读 · 0 评论