最近在学习中发现 netcat 连接被动后门比如( crontab 写定时反弹shell / alias替换命令反弹shell)时的局限性很大,当shell反弹回来,你却不能及时去操作shell这种情况,然后我就花了点时间写了个小脚本监控 (权当练习,毕竟过年无聊)。
功能点:
1、监控netcat的交互情况
2、正则匹配IP
3、当接收到shell的时候发送邮件推送
监控主要思路:
1、创建一个跑 netcat 的子进程
2、当接收到'connect'就执行下一步
3、before属性是直到异常为止接收的所有数据
4、在before中正则匹配IP
5、执行邮件方法,并将 肉鸡ip 通过邮件方式邮件到目标邮箱
6、将子进程控制权还给用户
用法:
./moniter.py [!]Usage: ./moniter.py [PORT]
实现工具所需的库:pexpect , smtplib , re
监控主要代码:
python def run(Port): process = pexpect.spawn("nc",['-lvp',Port]) # pdb.set_trace() process.expect_exact("connect", timeout = None) string = str(process.before) ip = re.search(r'((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))',string,re.M|re.I) print(ip.group()) em4il(ip) process.interact()
温馨提醒:发送邮件的邮箱需要在邮箱设置中开启smtp服务
实验截图:
完美运行👍
邮件发送截图
项目地址:
http://www.khan.org.cn/index.php/2020/02/01/netcat程序监控/
拓展:
脚本也可充当简陋的蜜罐用
脚本暂时不是太完善,如果被扫描则会断开链接。