网络安全,基于python实现入侵检测系统IDS的进程监控Webshell上线后调用命令进行报警的功能


调用psutil库,做一个循环,每次获取全部进程pid,如果进程数量有变化就对比找出新产生的进程。


像linux系统,webshell管理工具为中国蚁剑
,只要webshell执行了系统命令,就一定会有新进程产生,该图特征的进程就为sh,如果是Windows系统的话,为cmd.exe,可以根据这些特征对入侵检测系统监控进程进行编写规则


在windows平台的中国蚁剑,针对于p.name() == "cmd.exe"的话,我们就杀死该进程,从图可以看到,刚好要cd切换到www目录,就被干掉了,杀死的那瞬间因为异常变成ret=-1,后面不管输入什么命令都无法进行执行,那这个ret=-1,意思是,进程内部其实是执行到返回地址,但被杀死的那瞬间,返回地址没有完全返回,就成了这副逼样,这也是入侵检测系统防御黑客webshell执行命令的一个有效防御方法。

关于使用DLL注入技术,利用Windows平台,只要黑客调用了cmd.exe这个进程相关,那么立刻对该进程进行注入并弹出窗口提示,从而报告有黑客入侵行为

代码如下
import sys
from ctypes import *
import win32api
import win32con
FAGE_READWRITE =0x04
PROCESS_ALL_ACCESS =0x001F0
FFFVIRTUAL_MEN = (0x1000 | 0x2000)
kernel32 = windll.kernel32
user32 = windll.user32
dll_path = ‘cmd.exe’
dll_len = len(dll_path)
for pid in pids:
p = psutil.Process(pid)
if p.name() == ‘cmd.exe’:
break
h_process =
kernel32.OpenProcess(PROCESS_ALL_ACCESS,False,int(pid))
if not h_process:
print “[] Couldn’t acquire a handle to PID: %s" % pid
sys.exit()
argv_address = kernel32.VirtualAllocEx(h_process,0,dll_len,VIRTUAL_MEN,FAGE_READWRITE)
written = c_int(0)
kernel32.WriteProcessMemory(h_process,argv_address,dll_path,dll_len,byref(written))
h_user32 = kernel32.GetModuleHandleA(“kernel32.dll”)
h_loadlib = kernel32.GetProcAddress(h_user32,“MessageBoxA”)
thread_id = c_ulong(0)
if not kernel32.CreateRemoteThread( h_process, None, 0, h_loadlib, argv_address, 0, byref(thread_id)): print "[
] Failed to inject the DLL. Exiting.”
sys.exit()
else:
win32api.MessageBox(0, “入侵检测已发现入侵行为”, ‘黑客提示’)
print “thread_ID: 0x%08x create” % thread_id.value

后面还可以如果webshell执行了系统命令,那么报警发送一封QQ邮件,怎么实现这个功能呢?

https://www.cnblogs.com/mpp0905/p/8419869.html
如这个链接所示

按照这个思路,实现这个监控进程webshell执行系统命令

### WebShell 使用与防护 CTF 比赛技巧 #### WebShell 的使用场景和技术要点 在 CTF 比赛中,WebShell 是一种常见的攻击手段,通常用于获取并维持对目标服务器的控制。当题目提供 webshell 地址和连接密码时,可以使用工具如中国菜刀进行连接[^3]。 对于 WebShell 的具体应用: - **功能调用**:通过上传或注入 WebShell 文件到目标服务器上执行命令。 - **权限提升**:尝试利用已知漏洞进一步提权,但需注意某些比赛中可能不允许获得 root 权限[^2]。 - **信息收集**:查找敏感数据位置,下载重要文件等操作。 ```python import os def execute_command(command): try: output = os.popen(command).read() return output except Exception as e: return str(e) ``` 此代码片段展示了如何在一个简单的 Python 脚本中执行系统命令,这是许多 WebShells 中的核心功能之一。 #### 防御措施及注意事项 为了有效应对 WebShell 攻击,在准备阶段应采取预防性策略: - **环境配置安全化**:确保 PHP 环境下禁用了危险函数以阻止恶意脚本运行; - **定期更新补丁**:保持应用程序及其依赖库处于最新版本可减少被利用的风险; - **监控异常行为**:部署入侵检测系统 (IDS),实时跟踪可疑活动; 此外,在实际参赛过程中还需要关注团队协作方面的工作,比如及时调整账户密码以防泄露风险[^5]。 #### 实战建议 参与更多实战演练有助于积累处理各种情况的经验,推荐访问在线平台如 HackTheBox 或 VulnHub 进行针对性训练[^1]。阅读高质量 Write-Up 文档也是提高解决问题能力的有效途径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值