一、说明

如果出现文件上传漏洞和命令执行类漏洞(包括命令注入、缓冲区溢出、反序列化等)都会让人担心,系统是否系统已被上传webshell甚至植入木马程序。如果依靠人工排查,一是工作量大二是需要一定程度的技术知识和业务知识才能判断什么是正常什么是异常。工作量大决定排查工作不可能由个别具有技术知识和业务知识的人来完成工作而需要其他人员参与,而如果这些没有“一定程度的技术知识和业务知识”的人员参与基本必然后导致大量的误报和漏报(主要是漏报)。总而言之,在大量设备场景中人工排查后门是很难切实有效推行的排查手段。

所谓服务器后门,其本质其与桌面系统的病毒、木马并没有很大区别。在桌面系统中我们可以轻松使用360点击查杀完成病毒木马的查杀,在服务器我们也可以使用类似工具完成后门的查杀。至于漏报误报必然还是有的但会比人工排查少,至于效率则会高得多。

二、使用WebShellKiller查杀webshell

2.1 WebShellKiller简介

WebShellKiller是深信服发布的一款webshell查杀工具,支持jsp、asp、aspx、php等脚本的检查。

下载及更详细说明见链接:http://edr.sangfor.com.cn/backdoor_detection.html

由于不是商用产品也不是开源产品,所以不能保证其后续是否持续维护更新,但基于以下两点就算不再更新该产品还是比较可靠的。

首先,从当前效果看使用https://github.com/tennc/webshell.git webshell进行测试绝大部分都是能正确判断。

其次,身为webshell注定其最终必定要生成代码调用那些固定的危险函数,所以webshell的变形是有限制的,也就是所谓的“免杀”其实有比较高的门槛。

WebShellKiller支持windows和linux,我们这里只讲linux,windows直接解压双击运行没有什么操作性就不多讲了。

另外windows平台的webshell查杀还可以使用d盾WebShellKill:http://www.d99net.net/down/WebShellKill_V2.0.9.zip

在线查杀可使用百度webdir+:https://scanner.baidu.com/#/pages/intro

2.2 WebShellKiller安装使用

我在本机操作过程如下,本机不能连接什么的只要做等效操作去替代即可

# 下载WebShellKiller
wget http://edr.sangfor.com.cn/tool/WebShellKillerForLinux.tar.gz # 解压到当前目录
tar -zxf WebShellKillerForLinux.tar.gz # 查看解压结果,可以看到多出centos_32、centos_64、linux_64三个文件夹
# 如果是centos /redhat 32那就使用centos_32,如果是centos /redhat 64那就使用centos_64,如果是其他linux 64那就使用linux_64
ls # 查看当前操作系统
cat /etc/system-release # 查看当前操作系统是32位还是64位;x86是32位,x86_64或x64是64位;一般都是64位
uname -m # 我这里是centos 64所以进入centos_64
cd centos_64/wscan_app/ # 查看当前目录文件,wscan是主程序
ls # wscan默认没有可执行权限,需要加上
chmod u+x wscan # wscan从LD_LIBRARY_PATH加载so文件,需要将当前路径加到LD_LIBRARY_PATH以使wscan能找到当前目录下的so
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH # 执行扫描,../../webshell/jsp是我这里要扫描的路径,改成自己要扫描的即可
# 被列出的文件即是被认为可疑的文件,人工识别是否为web应用自己所用文件即可
./wscan -hrf ../../webshell/jsp

操作截图如下:

三、使用clamav查杀木马文件

clamav是开源木马病毒查杀软件,clamav依靠其数据库clamav-db进行查杀,clamav-db是持续更新的。其他安装可参考官方文档:http://www.clamav.net/documents/installing-clamav

3.1 安装与卸载

3.1.1 可联网centos/redhat系统yum安装与卸载

# 配置软件仓库,centos仓库没有clamav
yum install -y epel-release # 安装clamav依赖,其实如果是yum会自动安装依赖,写出来只是强调一下
yum install gcc openssl zlib -y # 安装clamav
yum install -y clamav # 卸载clamav
yum remove clamav*

3.1.2 不可联网centos/redhat系统rpm安装

不可联网系统可在可联网的同版本操作系统上下载好rpm包后再上传上去安装,如果gcc、openssl、zlib没安装用类似的方法安装上即可(如果有深层次依赖这操作可能有点痛苦)。

可联网机下载clamav(32位和64位都会下载根据自己操作系统选择使用即可;.i686是32位,.x86_64是64位):

# 这两个命令有时不好使,不行就换着用

# 使用yumdownloader下载clamav及其数据库clamav-db
# yumdownloader可以是非root用户执行
yumdownloader clamav clamav-db # 使用yum下载clamav及其数据库clamav-db
# yum 必须是root用户才能执行
yum install --downloadonly --downloaddir=. clamav clamav-db -y

不可联网机安装和卸载clamav:

# 上传后进入上传到的目录下,使用root执行安装
rpm -Uvh clamav-db*.rpm
rpm -Uvh clamav*.rpm # 卸载
clamav rpm -e clamav clamav-db

3.1.3 源码编译安装

前两种安装方式虽然比较方便但安装需要root且文件会散部到各系统文件夹中去,如果同期系统服务出现问题业务说是你装这个东西动了某些文件造成的,虽然这根本是无稽之谈但如果对系统不够了解你难免没有底气。手动编译一可以不使用root二可以安装到指定目录,所以可能比较麻烦(编译时没有报错也就两条命令但这基本是理想状态,首先gcc/openssl/zlib三个依赖不太可能都已装好其次还可能有其他问题)但反而是一种比较稳妥的方式。

不过由于下载病毒库需要联网所以这种方式并不能用于不能连接外网的环境中。

源码下载地址:http://www.clamav.net/downloads

# 编译,--prefix=指定安装位置必须是绝对路径形式,我这里是/usr/myapp/clamav,改成自己的
# --disable-clamav检测是否创建了clamav,直接禁用掉
./configure --prefix=/usr/myapp/clamav --disable-clamav # 当没有error时使用make进行编译,需要几分钟
# 如果是要重新编译,make前先用make clean清空之前编译出来的文件
make # 完成后使用make install进行安装
make install # 卸载,文件夹不会删除但其下文件已全删除
make uninstall

3.2 配置

这里以手动安装时为例,如果是yum或rpm形式安装那么默认配置和数据库都装好了,clamscan也已在环境变量中不需要此步。

# 创建存放日志和病毒库的文件夹
mkdir /usr/myapp/clamav/logs
mkdir /usr/myapp/clamav/db
# clamav日志文件不存在时不会自动创建只会报错退出所以先把稍后要用的日志文件创建出来
touch /usr/myapp/clamav/logs/clamd.log
touch /usr/myapp/clamav/logs/freshclam.log # 如是root用户运行那么clamav会强制切换到clamav用户运行
# 也就是说如果是root用户那么clamav用户必须存在
# 如果本来就是以普通用户运行,因为编译时使用了--disable-clamav所以可以不用创建
# shell设置为/bin/false用户不能用于登录所以不会降低系统安全性
# groupadd clamav
# useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav
# 如果以root运行,由于系统切换到clamav用户,所以需要将日志赋给clamav用户其才能写日志
# chown clamav:clamav /usr/myapp/clamav/logs/clamd.log
# chown clamav:clamav /usr/myapp/clamav/logs/freshclam.log # 启用配置文件
cd etc
cp clamd.conf.sample clamd.conf
cp freshclam.conf.sample freshclam.conf

编缉clamd.conf,修改以下四项(# Example表示将Example那项给注释掉,其余各项具体值根据自己路径修改):

# Example
LogFile /usr/myapp/clamav/logs/clamd.log
PidFile /usr/myapp/clamav/logs/clamd.pid
DatabaseDirectory /usr/myapp/clamav/db

编缉freshclam.conf,修改以下四项(# Example表示将Example那项给注释掉,其余各项具体值根据自己路径修改):

# Example
DatabaseDirectory /usr/myapp/clamav/db
UpdateLogFile /usr/myapp/clamav/logs/freshclam.log
PidFile /usr/myapp/clamav/logs/freshclam.pid

完成后最后进入bin目录使用freshclam下载/更新病毒库(如果不挂vpn,会比较慢甚至直接失败原因你懂得):

cd ../bin
./freshclam

3.3 查杀

# 进行查杀,-r表示遍历子文件夹,-l表示将发现的可疑文件记录到文件中
./clamscan -r -l scan.log ../../webshell/jsp
# 查看扫描结果
cat scan.log

记录其中的文件都是可疑文件,clamav主要是针对系统木马病毒的,我电脑没现成病毒以webshell代替,clamav只将少数webshell认为有问题。

四、使用Rootkit Hunter查杀rootkit

一般杀毒软件运行于ring3级别只能查杀ring3级别的木马,rookit是运行于ring0级别的木马,所以查杀rootkit也需要ring0级杀毒程序。Rootkit Hunter正是一款专门查杀rootkit的软件。

项目官网:http://rkhunter.sourceforge.net/

4.1 安装与卸载

离线rpm包安装类似clamav的3.1.2那样操作即可,这里只介绍yum和手动编译。

4.1.1 联网yum安装与卸载

# 配置epel仓库
yum install epel-release # 安装
yum install rkhunter -y # 卸载
yum erase rkhunter -y

4.1.2 手动编译安装与卸载

# 创建安装目录
mkdir rkhunter # 下载,替换成此时最新文件链接
wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz # 解压到当前文件夹
tar -zxf rkhunter-1.4..tar.gz # 建入解压出的文件夹
cd rkhunter-1.4. # 使用installer.sh文件进行安装,--layout custom用于自定义安装路径
./installer.sh --layout custom /usr/myapp/rkhunter --install # 卸载
./installer.sh --layout custom /usr/myapp/rkhunter --remove

4.2 查杀

前边安装可以使用普通用户,但查杀一定要root才能执行(要想在ring0运行这是必须的)。

# 进入可执行文件所在目录
cd ../rkhunter/bin/ # 执行查杀,前面的命行都可用非root用户执行但查杀必须使用root才行
# 查杀会分几部分进行,以下命令完成一部分后需要回车才进行下一部分
./rkhunter -c # 可以使用--skip-keypress参数跳过回车
./rkhunter -c --skip-keypress

查杀输出六部分分别如下:

第一部分,Checking system commands,进行系统命令的检查,主要是检测系统的二进制文件,因为这些文件最容易被rootkit。显示OK字样表示正常,显示Warning表示有异常,需要引起注意,而显示“Not found”字样,一般无需理会。

第二部分,Checking for rootkits,主要检测常见的rootkit程序,显示绿色的“Not found”表示系统未感染此rootkit。

第三部分,Performing additional rootkit checks,主要是一些特殊或附加的检测,例如对rootkit文件或目录检测、对恶意软件检测以及对指定的内核模块检测。

第四部分,Checking the network/Checking the local host,主要对网络、系统端口、系统启动文件、系统用户和组配置、SSH配置、文件系统等进行检测。

第五部分,主要是对应用程序版本进行检测。(我用时好像没有这部分?)

第六部分,System checks summary,其实是上面输出的一个总结,通过这个总结,可以大概了解服务器目录的安全状态。

实际操作看第一部分误报概率比较大,主要关注第六部分输出中Rootkit checks结果即可。

参考:

http://edr.sangfor.com.cn/backdoor_detection.html

http://www.clamav.net/documents/installing-clamav

http://blog.51cto.com/liuzhengwei521/2308935?source=dra

Linux服务器后门自动化查杀教程的更多相关文章

  1. linux服务器网站安全狗安装教程

    1.下载服务器安全狗和服务器网站安全狗,选择好版本.http://download.safedog.cn/safedog_linux64.tar.gz 这个是网站安全狗的下载地址2.登录centos进 ...

  2. Linux服务器部署JavaWeb项目完整教程

    本文大部分参考网上其他教程,是实际操作后回过头来的一些总结,希望可以对正在部署项目的你有所帮助. 基本环境:Centos7.tomcat8.jdk8,MySQL5.6.nginx 安装JDK yum ...

  3. Linux进程管理:查杀进程

    一.查看进程 Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux.这两个到底有什么区别呢? 两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格 ...

  4. Linux服务器上安装JDK小白教程

    一.环境 VMware12 Pro CentOS-6.7-i386-bin-DVD1 jdk-8u151-linux-i586 二.详细安装步骤 前提:需要卸载自己Linux上的jdk rpm -qa ...

  5. Linux系统木马后门查杀方法详解

    木马和后门的查杀是系统管理员一项长期需要坚持的工作,切不可掉以轻心.以下从几个方面在说明Linux系统环境安排配置防范和木马后门查杀的方法: 一.Web Server(以Nginx为例) 1.为防止跨 ...

  6. 记一次Linux服务器上查杀木马经历

    开篇前言 Linux服务器一直给我们的印象是安全.稳定.可靠,性能卓越.由于一来Linux本身的安全机制,Linux上的病毒.木马较少,二则由于宣称Linux是最安全的操作系统,导致很多人对Linux ...

  7. linux服务器上使用find查杀webshell木马方法

    本文转自:http://ju.outofmemory.cn/entry/256317 只要从事互联网web开发的,都会碰上web站点被入侵的情况.这里我把查杀的一些方法采用随记的形式记录一下,一是方便 ...

  8. Linux服务器感染kerberods病毒 | 挖矿病毒查杀及分析 | (curl -fsSL lsd.systemten.org||wget -q -O- lsd.systemten.org)|sh)

    概要: 一.症状及表现 二.查杀方法 三.病毒分析 四.安全防护 五.参考文章 一.症状及表现 1.CPU使用率异常,top命令显示CPU统计数数据均为0,利用busybox 查看CPU占用率之后,发 ...

  9. linux下python版webshell后门查杀工具

    使用说明: 1.查杀指定路径:python webshell.py 路径 2.按时间查找文件:python webshell.py 路径 “2013-09-28 00:00:00″ # -*- cod ...

随机推荐

  1. Keras序列模型学习

    转自:https://keras.io/zh/getting-started/sequential-model-guide/ 1.顺序模型是多个网络层的线性堆叠. 你可以通过将网络层实例的列表传递给  ...

  2. 【LeetCode每天一题】Spiral Matrix II(螺旋数组II)

    Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...

  3. python second lesson

    1.系统模块 新建的文件名不能和导入的库名相同,要不然python会优先从自己的目录下寻找. import sys  sys是一个系统变量,sys.argv会调出文件的相对路径,sys.argv[2] ...

  4. python list的函数

    1. list.append(obj) 在列表末尾添加新的对象 2. list.count(obj) 统计某个元素在列表中出现的次数 3. list.extend(seq) 在列表末尾一次性追加另一个 ...

  5. 在vue2.x项目中怎么引入Element UI

    参考:https://blog.csdn.net/u014054437/article/details/79862793 Element使用方法:https://element.eleme.cn/#/ ...

  6. pytorch torchvision对图像进行变换

    class torchvision.transforms.Compose(转换) 多个将transform组合起来使用. class torchvision.transforms.CenterCrop ...

  7. db2空值、null

    1. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')把NULL转换成''; 2. 输入类型为整型,且允许为空的,可以使用COALESCE(inputP ...

  8. flask 操作数据时,db的要在app.config设置之后声明:如app.config['SQLALCHEMY_DATABASE_URI']

    flask 操作数据时,db的要在app.config设置之后声明:如app.config['SQLALCHEMY_DATABASE_URI'] 否则,运行程序时app.config里面做的设置就不会 ...

  9. BIOS备忘录之IIC(touchpad)设备

    简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...

  10. Angular7 表单

    Angular 表单 input.checkbox.radio. select. textarea 实现在线预约功能 html 文件 <h2>人员登记系统</h2> <d ...