第218天-219天:应急响应篇&内网攻防&爆破事件&代理隧道&流量提进程&系统日志&处置封锁

爆破事件

口令横向

场景说明:不管是内网还是外网,协议口令爆破一直都是攻击里面最常见的方式。

  1. 明确对应口令爆破的日志存储路径及查看
  2. 明确日志中有哪些属性和判断依据(筛选)
  3. 对于大量日志可在后面要讲到的效率项目工具

SSH

我这里就使用九头蛇进行爆破吧:

1
hydra -l root -P top100.txt 192.168.179.131 ssh

image-20250704101233314

从日志筛选错误三次以上的日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 提取所有失败登录的 IP(包括密码错误和无效用户)
grep -E "Failed password|Invalid user" /var/log/secure | \
grep -oP '([0-9]{1,3}\.){3}[0-9]{1,3}' | \
sort | uniq -c | sort -nr

# 实时监控新的失败登录尝试
tail -f /var/log/secure | grep --line-buffered -E "Failed password|Invalid user"
# 实时监控新的成功登录
tail -f /var/log/secure | grep "Accepted password"


# 安装 fail2ban
yum install epel-release -y
yum install fail2ban -y

# 配置 SSH 防护规则
cat <<EOF > /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
maxretry = 3 # 失败 3 次后封禁
bantime = 1h # 封禁 1 小时
EOF

# 启动服务
systemctl enable --now fail2ban

# 封禁单个 IP
iptables -A INPUT -s 192.168.1.100 -j DROP

# 保存规则(CentOS 7+)
service iptables save

image-20250704101510990

这里是因为虚拟机使用的是NAT模式,所以这里读取到的是NAT的网卡的地址。

从日志观察什么时间节点上爆破成功的:

image-20250704102454195

上面都是登录失败,就这里登录成功了,如果这里不是管理员自己登录的日志,那么就是攻击者的登录日志,并且从日志的时间间隔来看这个就是一个爆破事件,因为没有人类可以一秒登录10次的,还有要注意的是在实际的攻防的情况下,可能不止有一队对你进行爆破,所以你日志会异常的多,这个就会涉及到后面使用工具自动的帮你进行筛选和分析。

实时监控登录成功的日志

image-20250704102910885

windows—RDP

image-20250704110335725

使用图形化的工具对其进行爆破攻击,这里可以看到爆破成功密码。

1
2
3
windows系统日志:
4625-->是登录失败
4624-->是登录成功

image-20250704110700038

直接筛选登录成功的日志,然后这里可以看到上图中红框中的就是攻击者的ip地址。

image-20250704111000850

从日志中分析,前面一直登录失败的时候也同样是这个ip在进行尝试,然后突然有一次登录成功了。这样来看就可以将其定性为一个爆破事件。

windows—smb爆破

image-20250704111600314

这里还是使用hydra进行爆破,这里可以看到爆破成功,回到日志中看看是否有对应日志:

image-20250704111653280

同样还是因为是虚拟机的原因,然后使用NAT进行的地址转化,所以在这个虚拟机看来就是自己的网关对自己进行的爆破。但是实际情况下, 服务器就是公网地址,所以就不会有这种情况。

Windows 系统常见安全日志事件 ID 对照表

事件 ID 事件类型 详细描述
4624 账户登录成功 记录用户或进程成功登录系统的事件,包含登录类型(如本地登录、远程桌面 RDP、网络登录等)、登录账户信息、登录来源 IP(远程登录时)、安全令牌信息等。
4625 账户登录失败 记录登录尝试失败的事件,包含失败的账户名、登录类型、失败原因(如密码错误、账户锁定、权限不足等)、来源 IP(远程登录时)等,常用于检测暴力破解、未授权登录尝试等安全事件。
4634 账户注销 记录用户或进程注销账户的事件,包含注销的账户名、注销类型(如主动注销、会话超时等)。
4647 用户主动注销 特指用户主动发起的注销操作,与 4634 相比,更明确标识 “主动” 行为,可用于审计用户会话结束的正常操作。
4672 账户使用了特殊权限 记录账户使用了系统管理员、备份操作员等特殊权限的事件,包含账户名、权限类型(如 SeSecurityPrivilege、SeBackupPrivilege 等),常用于监控高权限账户的操作。
4688 新进程创建 记录系统中创建新进程的事件,包含进程名、启动账户、父进程信息、进程路径等,可用于追踪恶意程序启动或异常进程创建。
4697 服务被安装 记录系统中安装新服务的事件,包含服务名称、服务路径、安装账户等,可用于检测恶意服务的植入。
4719 系统审计策略已更改 记录系统审计策略(如日志记录级别、审计对象等)被修改的事件,包含修改账户、修改前后的策略配置,常用于监控审计策略的异常变更(可能被攻击者篡改以绕过日志记录)。
4720 账户被创建 记录新用户账户创建的事件,包含账户名、创建者账户、账户属性(如是否为管理员)等,可用于检测未授权的账户创建行为。
4722 账户已登录 记录账户成功登录并获取令牌的事件,与 4624 相比,更侧重账户会话的建立,包含登录会话 ID、账户权限等信息。
4723 尝试修改账户密码 记录尝试修改账户密码的事件,包含目标账户名、操作账户、修改结果(成功 / 失败),可用于监控密码修改行为(如管理员账户密码被篡改)。
4724 尝试重置账户密码 记录尝试重置账户密码的事件(如通过重置磁盘、域控制器重置等),包含目标账户、操作账户、重置结果,常用于检测异常密码重置操作。
4738 账户信息已更改 记录账户属性(如用户名、隶属组、密码策略等)被修改的事件,包含修改的账户名、修改内容、操作账户,可用于监控账户权限的异常变更。
4740 账户被锁定 记录账户因登录失败次数过多等原因被锁定的事件,包含锁定的账户名、锁定时间、锁定来源(如域控制器、本地策略),可用于检测暴力破解导致的账户锁定。
4776 验证账户权限 记录系统对账户权限进行验证的事件(如访问资源时的权限检查),包含被验证的账户、资源路径、验证结果(允许 / 拒绝),可用于分析权限访问控制情况。
5140 网络共享被访问 记录用户访问网络共享资源(如文件共享、打印机共享)的事件,包含访问账户、共享路径、访问类型(读取 / 写入 / 删除等)、来源 IP,可用于审计网络资源的访问行为。
5156 网络策略更改 记录网络策略(如防火墙规则、连接属性)被修改的事件,包含修改账户、策略类型、修改内容,可用于监控网络配置的异常变更。

Windows-MSSQL

image-20250704111920494

像这种SQLsever这样的软件形式的服务,他的日志就不会在系统日志里面进行呈现,对应的像FTP这样的服务,可以使用windows—sever中的iis进行搭建,或者使用软件(FileZilla)的形式进行搭建,或者像在linux里面以一种服务的形式存在,三种方式,他们的日志产生的地方也不一样,所以要看你的服务是以什么样子的方式进行搭建的,然后在去百度一下对应的日志存储的位置,如果日志不是在默认的存储路径,那么就百度一下,看一下他的配置文件中的日志存储路径。

image-20250704114800011

但是我这里爆破成功了,但是没有日志。。。

image-20250704115732727

总结

1
2
3
4
5
爆破定性:时间次数的比例
成功失败:事件ID,关键字提示
日志查看:系统自带的日志,应用的日志

应急处理:拉黑IP,封锁协议,加上防护软件,或者安全策略(多次验证失败就会触发)

演示案例-蓝队技能-内网攻防-隧道技术&排查&应急

Linux-ICMP

1
https://github.com/esrrhs/pingtunnel

image-20250706105333072

这里我用的是centos所以这里我用的是:

1
pingtunnel_linux_amd64.zip

攻击者:

1
./pingtunnel -type server -key 1234

客户端:

1
2
3
./pingtunnel -type client -l :4445 -s 10.20.0.66 -t 10.20.0.66:4444 -tcp 1 -key 1234

10.20.0.132是攻击者的IP

image-20250706105808094

直接看网络连接,能看是能看就是一般注意不到。

使用项目:

1
2
3
4
https://github.com/Just-Hack-For-Fun/request_monitor

参考博客:
https://blog.csdn.net/native_lee/article/details/124751325

这里我用的centos,所以安装命令也不一样:

1
yum install bpftrace

image-20250706110757695

搞来搞去,还是用Ubuntu吧,centos报错内存问题

ip变成:

1
2
攻击者:10.20.0.66
客户端:10.20.0.166

image-20250706114436110

这里现实进程号是2514,那么查看进程2514看看是不是这么回事。

image-20250706114853130

实战情况下, 如果是icmp协议的隧道,那么就可以使用这样的工具,然后找到之后将其kill掉。

1
这里并不是像小迪视频中如果不指定ip的话,就监听全部,这里必须要指定ip地址,那么如何得到这个地址呢?一般蓝队的设备会报警哪个ip和哪个ip建立了什么隧道,但是怎么去干掉这进程你就可以使用这个工具,将其从设备上得到的ip,指定一下,kill掉就行。

Windows-ICMP

1
./pingtunnel -type client -l :4445 -s 10.20.0.66 -t 10.20.0.66:4444 -tcp 1 -key 1234

服务端就没有停止过。所以不用新建了。

image-20250706115809891

分析:Microsoft Message Analyzer

image-20250706115902919

要自己安装一下。

image-20250706123119296

image-20250706123144947

image-20250706123216871

image-20250706123352928

image-20250706123446251

Docker镜像&容器分析&Dockfile路径定位&基线扫描

image-20250707080938144

1
docker run -itd --restart=always -e POOL_URL=pool.supportxmr.com:5555 -e POOL_USER=45rfqYG9iNPddvenLpjFskJUhFgqBkdhDeah3X8D8ZJM3KpKqZWCLz3ewLsVd269tZiEyQRV53Ldv2DJb6xeuFokF7SBb1p --name xmrig pmietlicki/xmrig

image-20250706142247896

拉取这个镜像之后,发现进程中出现了一个占用很高的进程。那么尝试kill掉他。

1
kill -9 2180

image-20250706142346207

发现kill掉之后,又换了一个进程号之后又起来了。

可以进容器内部,看看是什么情况:

1
docker exec -it 147d0099af5e bash

image-20250706143641758

根据目录来看其实这就是一个挖矿程序,结合前期的,首先是找到这个挖矿程序,然后将其删除,如果还有权限维持,这样的玩意,就在继续往下清除。

image-20250706144010968

那么直接在容器里面删除可以吗?好像也可以

image-20250706144212160

1
直接在容器中删除,挖矿程序,然后清除进程同样可以。但是如何将这个挖矿程序导出来,放到在线平台里面进行分析呢?

使用 docker cp 命令,支持容器与宿主机之间的双向复制。

1
docker cp 45cf3e0a67d8:/home/miner/xmrig/build/xmrig ./

image-20250706144555941

image-20250706144917081

复制之后,放到威胁情报里进行分析,然后对其进行定性。

还有一种就是小迪上课的办法就是找容器在物理机上的路径,然后对应清除他,同样也是可以的。因为容器是安装在物理机上,所以物理机上一定会有容器的存放路径

使用docker history命令查看指定镜像的历史

加上--no-trunc,就可以看到全部信息。

1
2
3
docker history pmietlicki/xmrig | grep xmrig

docker history --no-trunc pmietlicki/xmrig | grep xmrig

image-20250706143102628

image-20250706143333098

查看镜像的配置信息

1
docker inspect --format='{{json .Config}}' pmietlicki/xmrig

image-20250706143415501

获取镜像的存储路径

1
2
docker inspect --format='{{.GraphDriver.Data.LowerDir}}' pmietlicki/xmrig
路径有很多个,需要一个一个试

image-20250706143449189

image-20250706145404410

同样是找到了,但是我现在是在物理机,不是在容器内部。直接删除物理机里面这个文件,然后在进去容器内部kill掉对应的进程。

image-20250706145514572

1
其实这里也能看出来,就是这里原本的挖矿程序已经不再了,所以这里跟我上面的第一种方式没有很大区别。

image-20250706145611601

image-20250706145712733

这个时候在看top进程情况,发现cpu占用正常了。

Docker镜像-web后门

上面这种挖矿程序,你一下就可以通过CPU的大量占用,很快就能察觉,那么如果是后门,该如何去发现和处置呢?

1
2
3
git clone https://github.com/vulhub/vulhub.git
cd vulhub/struts2/s2-046/
docker compose up -d

这里使用vulhub模拟红队对容器内部写入了一个shell。

image-20250706150538000

利用工具,写入一个冰蝎shell

image-20250706150850968

image-20250706150917150

image-20250706151041802

正常连接。

后门处置

下载河马的webshell查杀工具:

1
https://www.shellpub.com/?download=1

image-20250706151305771

上传到docker服务器上。

image-20250706151558071

然后将起传到容器内部

1
2
docker ps
docker cp hm-linux-amd64 11b747133cd1:/tmp/hm

image-20250706151701784

网站根路径:

image-20250706151921749

让河马对其进行扫描:

image-20250706152053044

image-20250706152215004

image-20250706152701182

处置办法就是直接删除这webshell,然后将其web漏洞补上。。或者下线这个站点。

docker基线检测

1
2
3
4
5
6
7
8
项目地址:https://github.com/aquasecurity/trivy
wget https://github.com/aquasecurity/trivy/releases/download/v0.54.1/trivy_0.54.1_Linux-64bit.deb
sudo dpkg -i trivy_0.54.1_Linux-64bit.deb
trivy image 容器名称(docker ps -a 获取)

这里我使用的centos,所以使用的命令是下面这种:
rpm -ivh trivy_0.64.1_Linux-64bit.rpm
trivy image vulhub/struts2:2.3.30

image-20250706155518138

他就会将自己找到的问题给你列出来。