brute ratel C4 badger全分析文档
Brute Ratel C4是一款类似于Cobalt Strike的商业红队武器框架,每年License收费为2500美元,客户需要提供企业电子邮件地址并在颁发许可证之前进行验证,首个版本Brute Ratel C4 v0.2于2021年2月9日发布,它是由Mandiant和CrowdStrike的前红队队员Chetan Nayak创建的,该工具独特之处在于它专门设计防止端点检测和响应(EDR)和防病毒(AV)软件的检测,是一款新型的红队商业对抗性攻击模拟武器。**AV(Antivirus):主要依赖于特征库来检测计算机病毒,杀毒的能力完全取决于其拥有的特征库的更新程度。EDR(Endpoint Detection and Response):是一种网络安全解决方案,专注于监控、检测和响应计算机端点(如桌面计算机、笔记本电脑、服务器等)上的潜在威胁和恶意活动。EDR系统通过收集和分析端点数据来发现异常行为、潜在攻击和漏洞利用。
与Cobalt Strike的Beacon后门类似,Brute Ratel C4允许红队在远程终端主机上部署Badger后门程序,Badger连接回攻击者的命令 ...
PE解析器编写
项目地址pe-parse/ at master · helsome/pe-parse (github.com)
理论部分见令一篇文章:PE结构浅析。
源码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168// dllmain.cpp : ...
利用dll通知回调加载shellcode
在 Windows 操作系统中,当一个 DLL(动态链接库)被加载或卸载时,系统会调用一个预先注册的回调函数来通知应用程序。在Windows用户态下,通常使用LdrRegisterDllNotification函数来注册回调函数。一些EDR产品也是使用此函数在用户态下从加载DLL事件中获取监测数据。函数的实现与数据结构的构造代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#include <Windows.h>#include <stdio.h>typedef struct _UNICODE_STR{ USHORT Length; USHORT MaximumLength; PWSTR pBuffer;} UNICODE_STR, * PU ...
os cs162
Thread and processaddress space
虚拟内存空间要经过转化才能映射到物理空间
process运行在user or kernel可以观察模式位(mod bit)判断
why threadthread是为了解决”muti“的问题,并发!
并行与并发的区别
wannacry勒索病毒加密解密过程分析
病毒介绍*遭受WannaCry病毒侵害的电脑,其文件将被加密锁死,惯常来说,受害用户支付赎金后 可以获得解密密钥,恢复这些文件。但是根据火绒工程师的分析,遭受WannaCry攻击的 用户可能会永远失去这些文件。 WannaCry 病毒存在一个致命缺陷,即病毒作者无法明确认定哪些受害者支付了赎金,因 此很难给相应的解密密钥,所以用户即使支付了赎金,也未必能顺利获得密钥该电脑系统 及文件依旧无法得到恢复。 至于网上流传的各种“解密方法”,基本上是没用的,请大家切勿听信谎言,以防遭受更多 财产损失。一些安全厂商提供的“解密工具”,其实只是“文件恢复工具”,可以恢复一些被 删除的文件,但是作用有限。因为病毒是生成加密过的用户文件后再删除原始文件,所以存在通过文件恢复类工具恢复 原始未加密文件的可能。但是因为病毒对文件系统的修改操作过于频繁,导致被删除的原 始文件数据块被覆盖,致使实际恢复效果有限。且随着系统持续运行,恢复类工具恢复数 据的可能性会显著降低。*该病毒分为两个部分:
蠕虫部分,用于病毒传播,并释放出勒索病毒。
勒索病毒部分,加密用户文件索要赎金。
以下是对wnry的行为分析。关 ...
博客踩坑日记
更新这篇文章的原因是记录自己在hexo搭建博客中踩得各种坑。目的是为了提醒自己,下次同样问题的时候可以不用再查。如果我的踩坑记录能帮到其他人,那自然是更好。
hexo d 报 Error: Spawn failed
这里出错的原因是因为git 进行push或者hexo d的时候改变了一些.deploy_git文件下的内容。
解决方法是删除.deploy_git文件夹(在blog的目录中);
查询到的方法为
12345678##删除git提交内容文件夹rm -rf .deploy_git/##执行git config --global core.autocrlf false##最后hexo clean && hexo g && hexo d
但是我这里报错
ls看一下
删除当前目录下的所有文件及目录,命令行为:
1rm -r *
文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
执行后,该文件夹中所有文件都被删除
最后
1hexo clean && hexo g && hexo d
解决后 ...
MYSQL学习笔记
MySQL学习笔记登录和退出MySQL服务器12345# 登录MySQL$ mysql -u root -p12345612# 退出MySQL数据库服务器exit;
基本语法12345678910111213141516171819202122232425262728293031323334353637383940-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;-- 创建数据表CREATE TABLE pet ( name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);-- 查看数据表结构-- describe pet;desc pet;-- 查询表SELECT * from pet;-- 插入数据INSERT INTO pet VALUES ('puffball& ...
go语言样本逆向分析特点
开源工具:https://github.com/0xjiayu/go_parserGo 语言的编译工具链会全静态链接构建二进制文件,把标准库函数和第三方 package 全部做了静态编译,再加上 Go 二进制文件中还打包进去了 runtime 和 GC(Garbage Collection,垃圾回收) 模块代码,所以导致文件结构非常复杂
go语言分析的难点go语言是一种适合处理高并发需求的语言,这和他的goroutine有关,这是一种轻量级线程,goroutine可以初始时只给栈分配很小的空间,然后随着使用过程中的需要自动地增长。这就是为什么Go可以开千千万万个goroutine而不会耗尽内存。每次执行函数调用时Go的runtime都会进行检测,若当前栈的大小不够用,则会触发“中断”,从当前函数进入到Go的运行时库,Go的运行时库会保存此时的函数上下文环境,然后分配一个新的足够大的栈空间,将旧栈的内容拷贝到新栈中,并做一些设置
独特的调用约定和栈管理机制,使 C/C++ 二进制文件逆向分析的经验在这里力不从心:Go 语言用的是 continue stack 栈管理机制 连续栈 ...
CobaltStrike UPX脱壳加壳
UPX加壳:使用x64dbg脱壳之开源壳upx - 知乎 (zhihu.com)
压缩后FILE size明显变小
查壳,发现已经加上了壳、
过了一些查杀,
自动脱壳方法(一般不灵)
1upx -d /path/to/file
手动脱壳用ada打开,发现加壳后发生了很大变化
找到OPE(原始程序入口地址)
设置硬件断点(不会修改原有代码)hardwware
c++程序的OEP特征123456789101112131415161718192021222324252627282930313233343536373839404100408027 >/$ 55 push ebp00408028 |. 8BEC mov ebp,esp0040802A |. 6A FF push -0x10040802C |. 68 F0F14000 push C++.0040F1F000408031 |. 68 84AF4000 push C++.0040AF84 ...
dll injection(dll注入)
DLL注入(英语:DLL injection)是一种计算机编程技术,它可以强行使另一个进程加载一个动态链接库以在其地址空间内运行指定代码,在Windows操作系统上,每个进程都有独立的进程空间,即一个进程是无法直接操作另一个进程的数据的(事实上,不仅Windows,许多操作系统也是如此)。但是DLL注入是用一种不直接的方式,来实现操作其他进程的数据。假设我们有一个DLL文件,里面有操作目标进程数据的程序代码逻辑,DLL注入就是使目标进程加载这个DLL,加载后,这个DLL就成为目标进程的一部分,目标进程的数据也就可以直接操作了
DLL注入基本流程(1) 打开目标进程12345678HANDLE OpenProcess( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId);//- dwDesiredAccess 访问权限//- bInheritHandle 是否继承句柄//- dwProcessId 要打开的进程pid
12345HANDLE hProcess = OpenProcess(PROCESS ...