您的位置 » 首页 » 安全运营,实用工具 » 安全维护:linux下python版webshell后门查杀工具

安全维护:linux下python版webshell后门查杀工具

发表于4年前 | 作者: seay | 分类: 安全运营, 实用工具 | 孵化于:2013年09月28日 | 文章热度:9,172 次 全屏阅读

显示不全请点击全屏阅读

最近几乎每天都有应急响应工作,自己写的一个linux下的webshell查杀小脚本,如果网站文件太多,打包太大,可以用这个脚本查杀一下,然后根据日志和时间再找其他的webshell,如果网站文件比较小,建议打包下来,用 {D盾Web后门查杀V1.2.6版本} 在windows下查杀,查杀脚本下载地址:http://www.cnseay.com/webshell.jpg

使用说明:

1.查杀指定路径:python webshell.py 路径

2.按时间查找文件:python webshell.py 路径 “2013-09-28 00:00:00”

# -*- coding: utf-8 -*-

import os
import sys
import re
import time

rulelist = [
    '(\$_(GET|POST|REQUEST)\[.{0,15}\]\s{0,10}\(\s{0,10}\$_(GET|POST|REQUEST)\[.{0,15}\]\))',
    '(base64_decode\([\'"][\w\+/=]{200,}[\'"]\))',
    '(eval(\s|\n)*\(base64_decode(\s|\n)*\((.|\n){1,200})',
    '((eval|assert)(\s|\n)*\((\s|\n)*\$_(POST|GET|REQUEST)\[.{0,15}\]\))',
    '(\$[\w_]{0,15}(\s|\n)*\((\s|\n)*\$_(POST|GET|REQUEST)\[.{0,15}\]\))',
    '(call_user_func\(.{0,15}\$_(GET|POST|REQUEST))',
    '(preg_replace(\s|\n)*\(.{1,100}[/@].{0,3}e.{1,6},.{0,10}\$_(GET|POST|REQUEST))',
    '(wscript\.shell)',
    '(cmd\.exe)',
    '(shell\.application)',
    '(documents\s+and\s+settings)',
    '(system32)',
    '(serv-u)',
    '(phpspy)',
    '(jspspy)',
    '(webshell)',
    '(Program\s+Files)'
]

def Scan(path):
    print('               可疑文件                 ')
    print('########################################')    
    for root,dirs,files in os.walk(path):
        for filespath in files:
            if os.path.getsize(os.path.join(root,filespath))<1024000:
                file= open(os.path.join(root,filespath))
                filestr = file.read()
                file.close()
                for rule in rulelist:
                    result = re.compile(rule).findall(filestr)
                    if result:
                        print '文件:'+os.path.join(root,filespath)
                        print '恶意代码:'+str(result[0])[0:200]
                        print('最后修改时间:'+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getmtime(os.path.join(root,filespath)))))
                        print '\n\n'
                        break

#由文件最后修改时间扫描
def _Get_Time_Files(_path,_time):
    _time = time.mktime(time.strptime(_time, '%Y-%m-%d %H:%M:%S'))
    print('\n')
    print('             可疑文件                   ')
    print('########################################')
    print('文件路径           最后修改时间   \n')
        
    for _root,_dirs,_files in os.walk(_path):
        for _file in _files:
            if _file.find('.')!=-1:
                _txt = _file[(_file.rindex('.')+1):].lower()
                    
                if _txt=='php' or _txt=='jsp': 
                    _File_Time =os.path.getmtime(_root+'/'+_file)
                    if _File_Time>_time:
                        print(_root+'/'+_file+'    '+ time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getmtime(_root+'/'+_file))))
                        

if len(sys.argv)!=3 and len(sys.argv)!=2:
    print '【参数错误】:'
    print '\t按恶意代码查杀: '+sys.argv[0]+' 目录名'
    print '\t按修改时间查杀: '+sys.argv[0]+' 目录名 修改时间(格式:"2013-09-09 12:00:00")'
if os.path.lexists(sys.argv[1])==False:
    print '提示:指定的扫描目录不存在--- 囧'

print('\n\n开始查杀:'+sys.argv[1])   

if len(sys.argv)==2:
    Scan(sys.argv[1])
else:
    _Get_Time_Files(sys.argv[1],sys.argv[2])

print('提示:查杀完成-- O(∩_∩)O哈哈~')

Tags:

webshell, 安全维护,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/3399/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有3个筒子的人留下了脚印...

  • wormfox 说:
    1楼
    2013 年 9 月 28 日 下午 5:36 回复

    正则匹配,嘿嘿!拆开!!!

  • wormfox 说:
    2楼
    2013 年 9 月 28 日 下午 5:38 回复

    晕,评论内容过滤了代码!

  • 月经不调 说:
    3楼
    2013 年 12 月 12 日 上午 1:17 回复

    😈 厉害

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)