2024全网最全面及最新且最为详细的网络安全技巧 十一:应急响应系列之Windows,Linux入侵排查(1)[含2024护网行动各厂商面试精题及全网查杀工具整合]

目录

 

入侵排查篇

11.1 windows 入侵排查

11.1.1 前言 先看账户

11.1.2 入侵排查思路

 (1) 检查系统账号安全

(2) 检查异常端口、进程 netstat -ano | findstr ESTAB 进程监听

 (3) 检查启动项、计划任务、服务

(4) 检查系统相关信息

(5) 自动化查杀

(6) 日志分析

11.1.3 工具篇

11.1.3.1 病毒分析

11.1.3.2 病毒查杀

11.1.3.4 病毒动态

11.1.3.5 在线病毒扫描网站

11.1.3.6 webshell查杀

尽信书则不如无书

11.2 Linux 入侵排查

11.2.1 前言

11.2.2 入侵排查思路

(1) 账号安全

(2) 历史命令

(3) 检查异常端口

(4) 检查异常进程

(5) 检查开机启动项

(6) 检查定时任务

(7) 检查服务

服务自启动

入侵排查

(8) 检查异常文件

(9) 检查系统日志

11.2.3 工具篇

11.2.3.1 Rootkit查杀

chkrootkit

rkhunter

11.2.3.2 病毒查杀

Clamav

11.2.3.3 webshell查杀

11.2.3.4 RPM check 检查

11.2.3.5 Linux安全检查脚本

Github 项目地址:

 11.3 常见的 Webshell 查杀工具

11.3.1前言

11.3.2 D盾_Web查杀

11.3.3 百度 WEBDIR+

11.3.4 河马

11.3.5 Web Shell Detector

11.3.6 CloudWalker(牧云)

11.3.7 Sangfor WebShellKill

11.3.8 深度学习模型检测 PHP Webshell

11.3.9 PHP Malware Finder

11.3.10 findWebshell

11.3.11 在线 WebShell 查杀工具

11.4 如何发现隐藏的 Webshell 后门

11.4.1 前言

11.4.2 文件 MD5 校验

11.4.3 diff 命令

11.4.4 版本控制工具

11.4.5文件对比工具

Beyond Compare

WinMerge  


入侵排查篇

  • 11.1 windows 入侵排查

  • 11.1.1 前言 先看账户

  • 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
  • 常见的应急响应事件分类:
  • Web 入侵:网页挂马、主页篡改、Webshell
  • 系统入侵:病毒木马、勒索软件、远控后门
  • 网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗
  • 针对常见的攻击事件,结合实际中应急响应事件分析和解决的方法,总结了一些 Windows 服务器入侵排查的思路。
  • 11.1.2 入侵排查思路

  •  (1) 检查系统账号安全
  • 1、查看服务器是否有弱口令,远程管理端口是否对公网开放。
  • 检查方法:据实际情况咨询相关服务器管理员。
  • 2、查看服务器是否存在可疑账号、新增账号。
  • 检查方法:打开 cmd 窗口,输入
  • lusrmgr.msc
  •  命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。 
  • 3、查看服务器是否存在隐藏账号、克隆账号。
  • 检查方法:
  •   a、打开注册表 ,查看管理员对应键值
  •   b、使D盾_web查杀工具集成了对克隆账号检测的功能。
  • 4、结合日志,查看管理员登录时间、用户名是否存在异常。
  • 检查方法:
  •   a、Win+R 打开运行,输入
  • eventvwr.msc
  • ,回车运行,打开“事件查看器”。
  •   b、导出 Windows 日志 -- 安全,利用微软官方工具 Log Parser进行分析。
  • (2) 检查异常端口、进程 netstat -ano | findstr ESTAB 进程监听
  • 1、检查端口连接情况,是否有远程连接、可疑连接。
  • 2、进程 process monitor process explorer
  • 检查方法:

    a、开始 -- 运行 -- 输入

    msinfo32 

    命令,依次点击 "软件环境 -- 正在运行任务" 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。

    b、打开D盾_web查杀工具,进程查看,关注没有签名信息的进程。

    c、通过微软官方提供的 Process Explorer 等工具进行排查 。

    d、查看可疑的进程及其子进程。可以通过观察以下内容:

    没有签名验证信息的进程

    没有描述信息的进程

    进程的属主

    进程的路径是否合法

    CPU 或内存资源占用长时间过高的进程

3、小技巧:

a、查看端口对应的 PID:

netstat -ano | findstr "port"

b、查看进程对应的 PID任务管理器 -- 查看 -- 选择列 -- PID 或者

 tasklist | findstr "PID"

c、查看进程对应的程序位置

任务管理器 -- 选择对应进程 -- 右键打开文件位置

运行输入

 wmic

,cmd 界面输入

 process

d、tasklist /svc 进程 -- PID -- 服务

e、查看Windows服务所对应的端口

%systemroot%/system32/drivers/etc/services
(一般 %systemroot% 就是 C:\Windows 路径)

 (3) 检查启动项、计划任务、服务

1、检查服务器是否有异常的启动项。

 检查方法:

  a、登录服务器,单击【开始】>【所有程序】>【启动】默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。

  b、单击开始菜单 >【运行】,输入

 msconfig

,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。

  c、单击【开始】>【运行】,输入

regedit

,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

d、利用安全软件查看启动项、开机时间管理等。

e、组策略,运行

 gpedit.msc

2、检查计划任务

  • 检查方法:

    a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。

    b、单击【开始】>【运行】;输入 cmd,然后输入 at,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。

3、服务自启动

  • 检查方法:单击【开始】>【运行】,输入

    services.msc


    注意服务状态和启动类型,检查是否有异常服务。

(4) 检查系统相关信息

1、查看系统版本以及补丁信息

  • 检查方法:单击【开始】>【运行】,输入

    systeminfo

    查看系统信息。

2、查找可疑目录及文件

  • 检查方法:

    a、 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。

    Window 2003版本 C:\Documents and Settings

    Window 2008R2及以后版本 C:\Users\

  • b、单击【开始】>【运行】,输入

     %UserProfile%\Recent

    ,分析最近打开分析可疑文件。

    c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。

    d、回收站、浏览器下载目录、浏览器历史记录

    e、修改时间在创建时间之前的为可疑文件

3、发现并得到 WebShell、远控木马的创建时间,如何找出同一时间范围内创建的文件?

a、利用 Registry Workshop 注册表编辑器的搜索功能,可以找到最后写入时间区间的文件。

b、利用计算机自带文件搜索功能,指定修改时间进行搜索

(5) 自动化查杀
  • 病毒查杀

    • 检查方法:下载安全软件,更新最新病毒库,进行全盘扫描。

  • webshell查杀

    • 检查方法:选择具体站点路径进行webshell查杀,建议使用两款 WebShell 查杀工具同时查杀,可相互补充规则库的不足。

(6) 日志分析

系统日志

  • 分析方法:

    a、前提:开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。

    b、Win+R 打开运行,输入

    eventvwr.msc

    ,回车运行,打开"事件查看器"。

    C、导出应用程序日志、安全日志、系统日志,利用 Log Parser 进行分析。

Web 访问日志

  • 分析方法:

    a、找到中间件的web日志,打包到本地方便进行分析。

  • b、推荐工具:

  • Windows 下,推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。

  • Linux 下,使用 Shell 命令组合查询分析


 

  • 11.2 Linux 入侵排查

  • 11.2.1 前言

  • 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
  • 针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些 Linux 服务器入侵排查的思路。
  • 11.2.2 入侵排查思路

  • (1) 账号安全

  • 基本使用:
  • 1、用户信息文件 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    account:password:UID:GID:GECOS:directory:shell
    用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
    注意:无密码只允许本机登陆,远程不允许登陆
    
    2、影子文件 /etc/shadow
    root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
    用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
  • who     查看当前登录用户(tty 本地登陆  pts 远程登录)
    w       查看系统信息,想知道某一时刻用户的行为
    uptime  查看登陆多久、多少用户,负载状态
  • 入侵排查:
  • 1、查询特权用户特权用户(uid 为0)
    [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd
    2、查询可以远程登录的帐号信息
    [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow
    3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
    [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
    4、禁用或删除多余及可疑的帐号
        usermod -L user    禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
    	userdel user       删除 user 用户
    	userdel -r user    将删除 user 用户,并且将 /home 目录下的 user 目录一并删除
  • (2) 历史命令

  • 基本使用:
  • 通过 .bash_history 文件查看帐号执行过的系统命令
  • 1、root 用户的历史命令
    histroy
    2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号执行的历史命令。
    为历史的命令增加登录的 IP 地址、执行命令时间等信息:
    1)保存1万条命令
    sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile
    2)在/etc/profile的文件尾部添加如下行数配置信息:
    ######jiagu history xianshi#########
    USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
    if [ "$USER_IP" = "" ]
    then
    USER_IP=`hostname`
    fi
    export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
    shopt -s histappend
    export PROMPT_COMMAND="history -a"
    ######### jiagu history xianshi ##########
    3)source /etc/profile 让配置生效
    生成效果: 1  2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
    3、历史操作命令的清除:history -c
    但此命令并不会清除保存在文件中的记录,因此需要手动删除 .bash_profile 文件中的记录。
  • 入侵排查:
  • 进入用户目录下,导出历史命令。
    cat .bash_history >> history.txt
  • (3) 检查异常端口

  • 使用 netstat 网络连接命令,分析可疑端口、IP、PID
  • netstat -antlp | more
    
    查看下 pid 所对应的进程文件路径,
    运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)
  • (4) 检查异常进程

  • 使用 ps 命令,分析进程
  • ps aux | grep pid 
  • (5) 检查开机启动项

  • 基本使用:
  • 系统运行级别示意图:
    • 运行级别
    • 含义
    • 0
    • 关机
    • 1
    • 单用户模式,可以想象为windows的安全模式,主要用于系统修复
    • 2
    • 不完全的命令行模式,不含NFS服务
    • 完全的命令行模式,就是标准字符界面
    • 4
    • 系统保留
    • 5
    • 图形模式
    • 6
    • 重启动
  • 查看运行级别命令
  •  runlevel
  • 系统默认允许级别
  • vi  /etc/inittab
    id=3:initdefault  #系统开机后直接进入哪个运行级别
  • 开机启动配置文件
  • /etc/rc.local
    /etc/rc.d/rc[0~6].d
  • 例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在 /etc/init.d 目录下,然后在 /etc/rc.d/rc*.d 文件中建立软链接即可。
  • 注:此中的 * 代表 0,1,2,3,4,5,6 这七个等级
  • root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
    
    此处sshd是具体服务的脚本文件,S100ssh是其软链接,
    S开头代表加载时自启动;
    如果是K开头的脚本文件,代表运行级别加载时需要关闭的。
  • 入侵排查:
  • 启动项文件
  • more /etc/rc.local
    /etc/rc.d/rc[0~6].d
    ls -l /etc/rc.d/rc3.d/
  • (6) 检查定时任务

  • 基本使用
  • 1、利用 crontab 创建计划任务
  • 基本命令

    crontab -l   列出某个用户cron服务的详细内容
    
    Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
    
    crontab -r   删除每个用户cront任务(谨慎:删除所有的计划任务)
    
    crontab -e   使用编辑器编辑当前的crontab文件 
    
    如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件

  • 2、利用 anacron 命令实现异步定时任务调度
  • 使用案例

    每天运行 /home/backup.sh 脚本:
    vi /etc/anacrontab 
    @daily    10    example.daily   /bin/bash /home/backup.sh
    当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

  • 日志文件
  • 说明
  • /var/log/cron
  • 记录了系统定时任务相关的日志
  • /var/log/cups
  • 记录打印信息的日志
  • /var/log/dmesg
  • 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
  • var/log/mailog
  • 记录邮件信息
  • /var/log/message
  • 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
  • /var/log/btmp
  • 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
  • var/log/lastlog
  • 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
  • /var/log/wtmp
  • 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
  • /var/log/utmp
  • 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
  • /var/log/secure
  • 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
  • 入侵排查
  • 重点关注以下目录中是否存在恶意脚本
  • /var/spool/cron/* 
    /etc/crontab
    /etc/cron.d/*
    /etc/cron.daily/* 
    /etc/cron.hourly/* 
    /etc/cron.monthly/*
    /etc/cron.weekly/
    /etc/anacrontab
    /var/spool/anacron/*
  •  小技巧:
  • more /etc/cron.daily/*  查看目录下所有文件
  • (7) 检查服务

  • 服务自启动

  • 第一种修改方法:
  • chkconfig [--level 运行级别] [独立服务名] [on|off]
    chkconfig –level  2345 httpd on  开启自启动
    chkconfig httpd on (默认level是2345)
  • 第二种修改方法:
  • 修改 /etc/re.d/rc.local 文件  
    加入 /etc/init.d/httpd start
  • 第三种修改方法:
  • 使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。
  • 入侵排查
  • 1、查询已安装的服务:
  • RPM 包安装的服务
  • chkconfig  --list  查看服务自启动状态,可以看到所有的RPM包安装的服务
    ps aux | grep crond 查看当前服务
    
    系统在3与5级别下的启动项 
    中文环境
    chkconfig --list | grep "3:启用\|5:启用"
    英文环境
    chkconfig --list | grep "3:on\|5:on"
  • 源码包安装的服务
  • 查看服务安装位置 ,一般是在/user/local/
    service httpd start
    搜索/etc/rc.d/init.d/  查看是否存在
  • (8) 检查异常文件

  • 1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
  • 2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
  • 可以使用find命令来查找,如
  • find /opt -name "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件
  • 3、针对可疑文件可以使用 stat 进行创建修改时间。
  • (9) 检查系统日志

  • 日志默认存放位置:/var/log/
  • 查看日志配置情况:more /etc/rsyslog.conf
  • 日志分析技巧:
  • 1、定位有多少IP在爆破主机的root帐号:    
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | uniq -c | sort -nr | more
    
    定位有哪些IP在爆破:
    grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
    
    爆破用户名字典是什么?
    grep "Failed password" /var/log/secure| awk '{print $9}' | sort -nr | uniq -c
     
    2、登录成功的IP有哪些: 	
    grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    登录成功的日期、用户名、IP:
    grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' 
    
    3、增加一个用户kali日志:
    Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
    Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali
    , shell=/bin/bash
    Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
    #grep "useradd" /var/log/secure 
    
    4、删除用户kali日志:
    Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
    Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
    Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
    # grep "userdel" /var/log/secure
    
    5、su切换用户:
    Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
    
    sudo授权执行:
    sudo -l
    Jul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

  • 11.2.3 工具篇

  • 11.2.3.1 Rootkit查杀

  • chkrootkit

    使用方法:
    wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
    tar zxvf chkrootkit.tar.gz
    cd chkrootkit-0.52
    make sense
    #编译完成没有报错的话执行检查
    ./chkrootkit

  • 使用方法:

    rkhunter

    使用方法:
    Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
    tar -zxvf rkhunter-1.4.4.tar.gz
    cd rkhunter-1.4.4
    ./installer.sh --install
    rkhunter -c

  • 11.2.3.2 病毒查杀

  • Clamav

  • 安装方式一:
  • 1、安装 zlib:
    wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz 
    tar -zxvf  zlib-1.2.7.tar.gz
    cd zlib-1.2.7
    #安装一下gcc编译环境: yum install gcc
    CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
    make && make install
    
    2、添加用户组 clamav 和组成员 clamav:
    groupadd clamav
    useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
    
    3、安装 Clamav
    tar –zxvf clamav-0.97.6.tar.gz
    cd clamav-0.97.6
    ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
    make
    make install
    
    4、配置 Clamav
    mkdir /opt/clamav/logs
    mkdir /opt/clamav/updata
    touch /opt/clamav/logs/freshclam.log
    touch /opt/clamav/logs/clamd.log
    cd /opt/clamav/logs
    chown clamav:clamav clamd.log
    chown clamav:clamav freshclam.log
    
    5、ClamAV 使用:
     /opt/clamav/bin/freshclam 升级病毒库
    ./clamscan –h 查看相应的帮助信息
    ./clamscan -r /home  扫描所有用户的主目录就使用
    ./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果
  • 安装方式二: 
  • #安装
    yum install -y clamav
    #更新病毒库
    freshclam
    #扫描方法
    clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
    clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
    clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
    #扫描并杀毒
    clamscan -r  --remove  /usr/bin/bsd-port
    clamscan -r  --remove  /usr/bin/
    clamscan -r --remove  /usr/local/zabbix/sbin
    #查看日志发现
    cat /root/usrclamav.log |grep FOUND
  • 11.2.3.3 webshell查杀

  • Linux 版:
  • 河马 WebShell 查杀:http://www.shellpub.com
  • 11.2.3.4 RPM check 检查

  • 系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了
  • ./rpm -Va > rpm.log
  •  如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。
  • 验证内容中的8个信息的具体内容如下:
    		S         文件大小是否改变
    		M         文件的类型或文件的权限(rwx)是否被改变
    		5         文件MD5校验是否改变(可以看成文件内容是否改变)
    		D         设备中,从代码是否改变
    		L         文件路径是否改变
    		U         文件的属主(所有者)是否改变
    		G         文件的属组是否改变
    		T         文件的修改时间是否改变
  • 如果命令被替换了,如果还原回来:  
  • 文件提取还原案例:
    rpm  -qf /bin/ls  查询 ls 命令属于哪个软件包
    mv  /bin/ls /tmp  先把 ls 转移到 tmp 目录下,造成 ls 命令丢失的假象
    rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到当前目录的 /bin/ls 下
    cp /root/bin/ls  /bin/ 把 ls 命令复制到 /bin/ 目录 修复文件丢失
  • 11.2.3.5 Linux安全检查脚本

  • Github 项目地址:

  • GitHub - grayddq/GScan: 本程序旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。
  • GitHub - ppabc/security_check: LINUX安全检查脚本,支持centos5,centos6,ubuntu
  • GitHub - T0xst/linux: linux安全检查
  • 尽信书不如无书,工具只是辅助,别太过于依赖,关键在于你如何解决问题的思路。

  •  11.3 常见的 Webshell 查杀工具

  • 11.3.1前言

  • 当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞。
  • 本文推荐了10款 WebShll 检测工具,用于网站入侵排查。当然,目前市场上的很多主机安全产品也都提供这种 WebShell 检测能力,比如阿里云、青藤云、safedog 等,本文暂不讨论。
  • 11.3.2 D盾_Web查杀

  • 阿D出品,使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的 WebShell 后门行为。
  • 兼容性只提供 Windows 版本
  • 工具下载地址:D盾防火墙
  • 11.3.3 百度 WEBDIR+

  • 下一代 WebShell 检测引擎,采用先进的动态监测技术,结合多种引擎零规则查杀。
  • 兼容性:提供在线查杀木马,免费开放 API 支持批量检测
  • 在线查杀地址:https://scanner.baidu.com
  • 11.3.4 河马

  • 专注 WebShell 查杀研究,拥有海量 WebShell 样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术。查杀速度快、精度高、误报低
  • 兼容性:支持 Windows、Linux,支持在线查杀
  • 官方网站:SHELLPUB.COM
  • 11.3.5 Web Shell Detector

  • Web Shell Detector 具有 WebShell 签名数据库,可帮助识别高达 99% 的 WebShell
  • 兼容性:提供 PHP、Python 脚本,可跨平台,在线检测
  • 官方网站:Web Shell Detector
  • github项目地址:https://github.com/emposha/PHP-Shell-Detector
  • 11.3.6 CloudWalker(牧云)

  • 一个可执行的命令行版本 Webshell 检测工具。目前,项目已停止更新。
  • 兼容性:提供 Linux版本,Windows 暂不支持。
  • 在线查杀 demo:CT Stack 安全社区
  • GitHub 项目地址:https://github.com/chaitin/cloudwalker
  • 11.3.7 Sangfor WebShellKill

  • Sangfor WebShellKill (网站后门检测工具)是一款 Web 后门专杀工具,不仅支持 WebShell 的扫描,同时还支持暗链的扫描。是一款融合了多重检测引擎的查杀工具。能更精准地检测出WEB网站已知和未知的后门文件。
  • 兼容性:支持 Windows、linux
  • 工具下载地址:深信服EDR
  • 11.3.8 深度学习模型检测 PHP Webshell

  • 一个深度学习 PHP WebShell 查杀引擎 demo,提供在线样本检测。
  • 在线查杀地址:http://webshell.cdxy.me
  • 11.3.9 PHP Malware Finder

  • PHP-malware-finder 是一款优秀的检测webshell和恶意软件混淆代码的工具
  • 兼容性:提供Linux 版本,Windows 暂不支持
  • GitHub 项目地址:https://github.com/jvoisin/php-malware-finder
  • 11.3.10 findWebshell

  • 这个项目是一款基于 Python 开发的 WebShell 检查工具,可以根据特征码匹配检查任意类型的 WebShell 后门。
  • GitHub 项目地址:https://github.com/he1m4n6a/findWebshell
  • 11.3.11 在线 WebShell 查杀工具

  • 在线查杀地址:http://tools.bugscaner.com/killwebshell

  • 11.4 如何发现隐藏的 Webshell 后门

  • 11.4.1 前言

  • 如何在百万行代码里发现隐藏的后门?
  • 试想一下,如果你的网站被入侵,攻击者留下隐藏的后门,你真的都可以找出来吗?面对一个大中型的应用系统,数以百万级的代码行,是不可能做到每个文件每段代码进行手工检查的。
  • 即使是一款拥有 99.9% 的 Webshell 检出率的检测引擎,依然可能存在 Webshell 绕过的情况。另外,像暗链、网页劫持、页面跳转等常见的黑帽 SEO 手法,也很难通过手动检测或工具检测全部识别出来。
  • 最好的方式就是做文件完整性验证。通过与原始代码对比,可以快速发现文件是否被篡改以及被篡改的位置。当然,第一个前提是,你所在的团队已具备代码版本管理的能力,如果你是个人站长,相信你已经备份了原始代码。
  • 本文将结合实际应用,介绍几种文件完整性验证方式,或许可以帮助你找出代码中隐藏的后门。
  • 11.4.2 文件 MD5 校验

  • 下载D盾_Web查杀工具的时候,我们可以留意到下载的压缩包里,除了有一个 exe 可执行文件,还有一个文件 md5 值。这个是软件作者在发布软件时,通过 md5 算法计算出该 exe 文件的"特征值"。
  • 下载地址:http://www.d99net.net/down/WebShellKill_V2.0.9.zip
    文件 MD5:29285decadbce3918a4f8429ec33df46   WebShellKill.exe
  • 当用户下载软件时,可以使用相同的校验算法计算下载到 exe 文件的特征值,并与软件开发者发布的特征值比较。
  • 如果两个特征值相同,则认为下载到的 exe 文件是正确的。如果两个特征值不同,则认为下载到 exe 文件是被篡改过的
  • 那同理可得,我们可以将所有网站文件计算一次 hash 值保存,当出现应急情况时,重新计算一次 hash 值,并与上次保存的 hash 值进行对比,从而输出新创建的、修改过及删除的文件列表
  • 文件 hash 值计算:
  • import hashlib
    import os
    
    def md5sum(file):
        # 创建一个 MD5 哈希对象
        m = hashlib.md5()
        
        # 检查传入的参数是否为文件路径
        if os.path.isfile(file):
            # 以二进制模式打开文件
            f = open(file, 'rb')
            # 逐行读取文件内容
            for line in f:
                # 更新 MD5 哈希对象
                m.update(line)
            # 关闭文件
            f.close()  # 此处应加上括号
        else:
            # 如果不是文件路径,直接更新哈希对象(假设 file 是字节串或字符串)
            m.update(file)
        
        # 返回 MD5 校验和的十六进制表示
        return m.hexdigest()
    
  • 对文件进行哈希值重新计算,进行校验对比,测试
  • 11.4.3 diff 命令

  • 在 Linux 中,我们经常使用 diff 命令来比较两个文本文件的差异。同样,我们可以通过一行命令快速找出两个项目文件的差异。
  • diff -c -a -r cms1 cms2
    md5sum比较两个文件夹下面文件是否相同
    
    Copy文件夹之后,检测两个文件夹(dir1,dir2)下文件是否相同。logdir 是任何一个存放生成文件的目录
    cd dir1
    find ./ -type f -exec md5sum {} \; | sort -k 2  > result.txt
    
    cd dir2
    find ./ -type f -exec md5sum {} \; | sort -k 2  > result.txt
    cd logdir
    
    
    diff result.txt result.txt
  • PS:如果只是想查看两个文件是否不同又不想显示差异之处的话可以加上 -q 选项。
  • 11.4.4 版本控制工具

  • 版本控制工具,比如说 git,重新上传代码到 git,add+commit+push,然后打开项目,点击 commits,在历史提交版本里面,查看文件更改内容,很容易就可以发现代码被篡改的地方了。
  • 另外,也可以通过 git diff 用来比较文件之间的不同。
  • 11.4.5文件对比工具

  • 关键词:代码对比工具,你会找到很多好用的工具.
  • 这里我们推荐两款效果还不错的工具:Beyond Compare 和 WinMerge。
  • Beyond Compare
  • Beyond Compare 是一套由 Scooter Software 推出的文件比较工具。主要用途是对比两个文件夹或者文件,并将差异以颜色标示,比较范围包括目录,文档内容等
  • 下载地址:Scooter Software - Home of Beyond Compare
  • 软件使用示例,通过文件夹比较,找出文件夹中的差异内容。
  • 1、双击 Beyond Compare ,打开软件主页,选择文件夹比较。
  • 2、在双边栏输入文件夹路径,点击显示差别,列出差异部分的内容,紫色部分为新增文件,红色部分为篡改文件。
  • 3、双击具体文件,进入代码对比,找到代码差异部分。
  • WinMerge  
  • WinMerge 是一款运行于 Windows 系统下的文件比较和合并工具,使用它可以非常方便地比较文件夹和文件,以易于理解的可视文本格式显示差异。
  • 下载地址:Download WinMerge - WinMerge
  • 1、文件 -- 打开,选择文件或文件夹,然后点击进行比较。
  • 2、在同一个界面里,通过颜色和文本提示,显示文件夹内容差异。

\sec \ae \angle \uplus\Delta \uplus\frac{\textup{\boldsymbol{\textit{\mathrm{}}}}}{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值