最近遇到了很多服务器被入侵的例子,为了方便日后入侵检测以及排查取证,我查询了一些linux服务器入侵取证的相关资料,并在此总结分享,以便日后查询。 一般服务器被入侵的迹象,包括但不局限于:由内向外发送大量数据包(DDOS肉鸡)、服务器资源被耗尽(挖矿程序)、不正常的端口连接(反向shell等)、服务器日志被恶意删除等。那么既然是入侵检测,首先要判断的是服务器是否被入侵,必须排除是管理员操作不当导致的问题,因此入侵检测的第一项工作就是询问管理员服务器的异常现象,这对之后入侵类型的判断非常重要。 在询问了相关异常信息,排除了管理员操作失误等原因后,那么便可以开始正式的上服务器进行入侵检测以及取证操作了。 pidof查看正在运行的名为的进程
fuser可以通过文件或者tcp udp协议看到进程
stat可以看文件修改时间,大小等信息
lsmod看加载模块
rpcinfo看rpc服务开放
dmesg看网卡是否混杂模式(promiscuous mod)
审计命令last这个命令可用于查看我们系统的成功登录、关机、重启等情况,本质就是将/var/log/wtmp文件格式化输出,因此如果该文件被删除,则无法输出结果。 相关参数: lastb这个命令用于查看登录失败的情况,本质就是将/var/log/btmp文件格式化输出。 相关参数: lastlog这个命令用于查看用户上一次的登录情况,本质就是将/var/log/lastlog文件格式化输出。 相关参数: who这个命令用户查看当前登录系统的情况,本质就是将/var/log/utmp文件格式化输出。主要用来查看当前用户名称,以及登陆的ip地址信息,w命令与who一样,会更详细一些。 history查看历史命令记录,其实就是查看root/.bash_history文件内容,删除这个文件,记录就没了。 相关参数: history显示时间戳:
检查用户Linux不同的用户,有不同的操作权限,但是所有用户都会在/etc/passwd、/etc/shadow、/etc/group文件中记录。
注:linux设置空口令:passwd -d username 检查进程一般被入侵的服务器都会运行一些恶意程序,或是挖矿程序,或者DDOS程序等等,如果程序运行着,那么通过查看进程可以发现一些信息。 普通进程
如果进程中没有发现异常,那么可以看看有没有开启某些隐藏进程。 隐藏进程
注:以上3个步骤为检查隐藏进程。 检查文件被入侵的网站,通常肯定有文件被改动,那么可以通过比较文件创建时间、完整性、文件路径等方式查看文件是否被改动。
检查网络检查网络的目的,是查看黑客是否通过篡改网卡类型,进行流量嗅探等操作。
检查计划任务当我们尝试kill恶意程序时,往往会遇到被kill程序自动启动的问题,那么就要检查下计划任务(cron)了。
检查系统后门可以使用工具,如:Conmodo、rkhunter等,当然也可以手工输入命令检查。
查看著名的木门后门程序:
检查网站后门如果服务器上运行着web程序,那么需要检查是否通过web漏洞入侵服务器,具体的判断方法可以结合分析中间件日志以及系统日志,但过程需要较长时间。我们也可以通过检查服务器上是否留有入侵者放置的网站后门木马,以此判断黑客是否通过web应用入侵到服务器。 Method One
Method Two 直接使用MaskFindShell工具,进行webshell扫描(目前只能扫描jsp与php的网站,并且php的误报比较高) 寻找服务器物理路径无论哪种方法的webshell查找,首先要确定的是web服务器安装的路径,因为webshell都是放在web路径下的。
打包文件当我们做好一切入侵检测分析后,我们需要把一些日志文件copy到本地进行更进一步详细的分析时,怎么打包服务器相关信息,并且copy到本地呢? 打包web文件打包文件名中包含jsp的文件,打包后的文件为my_txt_files.tar:
打包日志文件
打包其他信息
传输文件到本地将服务器上的文件传输到本地电脑上的几种方法。 lrzsz如果ssh连接的客户端为xshell等,可以安装lrzsz命令(putty无法使用)
使用: 开启ftp或者http 开ftp这里我不介绍了,网上很多教程,这里主要说说开启http服务。 U盘挂载如果我们不是通过ssh的方式连接,而是直接通过显示器连接上服务器进行操作,那么可以尝试U盘传输。
本文总结的都是一些Linux入侵检测最基础的命令,至于怎么用好这些命令,需要结合实际情况,主要还是看经验。以上所诉,还只是入侵检测信息收集阶段,至于如何通过现有信息分析出入侵途径,还需要借助其他工具以及知识。 |