当企业被攻击者入侵、系统链接暗链接、内容被恶意篡改、服务器异常连接或卡顿等情况下,需要进行应急处理使系统在最短的时间内做出响应。恢复正常。由于应急处理往往是有时间限制的,所以尽量将常用的应急处理方法集成到脚本中,这样可以将部分应急工作自动化。应急脚本用python2.0完成。由于所有需要执行的命令都依赖ssh进行远程连接,因此在运行脚本之前,需要输入正确的主机ip地址、ssh远程连接端口、ssh远程登录账号、ssh远程登录密码。一、脚本实现的主要功能1、获取主机信息获取的主机信息包括:主机ip地址、主机名、当前系统内核版本、当前系统版本、系统当前时间;2.获取异常进程。第一种方式是通过执行netstat-antp获取当前主机上有哪些链接,判断外部链接地址的归属。如果归属地不是中国,则提取相关pid,根据pid定位文件位置。第二种方式是使用cpu占用率。一旦发现cpu占用率高于%15,就会提取对应程序的pid,根据pid定位异常文件的位置。3.判断常用命令是否被篡改。在之前的应急响应中,常用命令被非法篡改,如ps、netstat等命令被恶意替换。使用stat查看文件的详细信息,通过时间对比判断命令是否被篡改。.4、检查系统启动项。很多恶意程序会修改系统的启动项,这样即使系统重启,恶意程序也可以自动启动。查看init.d目录下的启动文件,根据修改时间提取最近修改的启动文件。并按照时间顺序列出前5名。5、查看历史命令查看.bash_history历史命令,通过匹配关键字,如wget、cur等,查看系统被入侵后是否被恶意操作。6.判断非系统默认账号的恶意程序可能会在系统中新建账号,通过查看login.defs文件获取最小uid,然后根据uid查看passwd文件获取新创建的系统用户。7、获取当前登录用户。通过调用who,查看当前登录用户(tty为本地登录,pts为远程登录),判断是否存在异常用户登录。8、查看系统当前用户checketc/passwd查看相关用户信息,判断是否存在异常用户。9、查看crontab定时任务查看/etc/crontab定时任务,并将输出结果保存在日志中10、查看并保存最近三天的系统文件修改情况使用find命令查找已经被修改的文件最近三天修改过。系统文件较多,所以修改后的文件单独保存在本地的file_edit文件中。11.搜索特权用户。查看passwd文件,找到用户id为0的特权用户。12.安全日志分析日志分析是应急响应中最重要的工作,尤其是在应急响应后期的溯源阶段,日志分析就显得尤为重要,因为日志的类型包括服务器日志和应用日志,这里我们只分析安全服务器日志,提取日志的ip地址进行判断,判断IP归属,查看到的安全日志单独保存在本地secure.脚本运行后输出如下信息:最后在当前目录下生成如下文件。目录下的secure.txt,记录当前目录下的安全日志file_edit.txt。记录最近三天的文件修改情况可以正常运行,可以根据实际环境调整命令。上面的一些功能如果有好的实现方法也可以灵活调整,比如判断一个普通命令是否被篡改,判断是根据脚本中的时间,也可以根据实际应用中的文件大小。最后,整体代码比较草率。如果大家有什么意见,欢迎大家指出。希望能通过改进完善功能。链接地址:https://github.com/tide-emergency/yingji二、参考资料写这个脚本的很多命令都是基于大牛的一些经验,感谢分享,具体参考链接如下:http:///blog.nsfocus.net/emergency-response-case-study/https://github.com/grayddqhttps://github.com/T0xst/linux
