应急响应——Linux入侵排查_linux 服务器有奇怪的ip访问进程-程序员宅基地

技术标签: 蓝队  运维  linux  

事件响应可以定义为每当发生计算机或网络安全事件时所采取的行动过程。作为事件响应者,您应该始终了解系统中应该出现和不应该出现的内容。
排查思路

(1)首先监测用户账号安全,比如新增的账号、可疑账号,重点查看可以远程登录的账号以及高权限账号。
(2)利用linux的history指令查看历史linux指令,uptime指令查看登录多久、多少用户。
(3)检查异常端口和进程,netstat检查异常端口,ps检查异常进程,可以观看资源占用的进程id来判断是否有挖矿木马等嫌疑。
(4)检查linux的启动项和系统的定时任务crontab,crontab -l查看是否有异常的任务编写进来。
(5)检查linux的日志信息/var/log/一些系统日志信息、安全日志等。
(6)自动化查杀软件,在线查杀工具,查杀脚本来查杀。

linux应急响应可按4个环节进行:

  • 识别现象——清除病毒——闭环兜底——系统加固 首先从服务器异常现象出发,根据服务器CPU、内存占用,网络流量,识别出病毒的可疑迹象
  • 然后通过进程、端口开放、历史命令、进出站流量、日志审计等定位到具体的病毒进程及病毒文件,进行清除
  • 因为病毒一般会通过一些自启动项及守护进程进行重复感染,所以我们要对攻击者账户、定时任务、恶意自启动服务、系统文件劫持、守护进程等进行排查,防止重复感染
  • 将主机上的病毒项清除干净后,最后对系统进行加固,分析日志,发现漏洞出现的具体位置,是未打补丁,未升级或弱密码,对漏洞进行针对性的处置,防止病毒从web再次入侵
    在这里插入图片描述

识别现象

通过系统运行状态、安全设备警告、监控系统发现主机上具有异常行为:异常流量、异常端口、CPU/内存占用率异常等等
针对不同的现象评估可能出现的问题:

  • SSH暴力破解:22端口上具有不明地址的连接,/var/log/secure中存在大量登录失败记录
  • 短链接:监控设备发现服务器不断向某地址发起请求,多次刷新端口、进程时发现短链接
  • 挖矿病毒:服务器持续向外部ip发送连接,下载病毒源;不规则的异常进程、异常下载
  • 盖茨病毒:CPU资源异常,异常进程占用大量网络带宽,异常IP连接、异常进程、异常启动项
  • DDOS病毒:服务器网络资源异常、带宽占用率高,影响网络业务使用

进程

连接到系统服务器后开始对现象进行调查,查看CPU、内存、进程、系统挂载等
#top命令降序查看cpu占用率

top

CPU占用率达到70%以上,且名字比较可疑的进程,可能就是病毒
在这里插入图片描述

枚举进程

ps -aux

病毒多携带可疑的命令行,当发现命令行中带有url或奇怪字符时,就要注意是否它是否是个病毒下载程序
在这里插入图片描述

定位某一进程

lsof -p <PID>

在这里插入图片描述

查看安全网关或监控系统
查看网关或监控系统中与目标ip通信的进程,并通过命令行列举出此进程

##列举网络Socket连接的进程
while true;do netstat -antp | grep <ip>; done

在这里插入图片描述

有时后检测到的是个域名,其对应的ip在不断变化,用上述方法过滤ip并不适用,可疑在hosts文件中将域名绑定为一个随机的ip,对其进行监控
在这里插入图片描述

这样使用如上的命令进行过滤就可以得到恶意进程了
在这里插入图片描述

得到恶意进程和其PID后,使用如下命令寻找恶意进程储存的位置

ls -al /proc/<pid>/exe

在这里插入图片描述

端口

检查是否存在任何异常端口被开启

netstat -nap         //查询开启端口及进程

在这里插入图片描述

##查询开启端口,包含UDP和TCP
##参数-t表示TCP,-u表示UDP
netstat -nutpl

在这里插入图片描述

历史命令

##查看root的历史指令
history

在这里插入图片描述

##查看各用户的历史指令
cat /home/user/.bash_history

在这里插入图片描述

恶意文件查找

通过恶意进程、端口、网络等找到恶意文件路径最好,但有时候我们也需要仔细排查其他目录是否有残余的病毒

首先查看/usr/bin/ls , /usr/bin/lsof ,/usr/bin/stat 几个文件没有被修改

stat /usr/bin/ls
stat /usr/bin/lsof
stat /usr/bin/stat

排查可读写执行目录

ls -al /tmp/; ls -al /var/tmp; ls -al /dev/shm

排查$PATH环境变量下的目录文件

echo $PATH
ls -al /usr/local/sbin
ls -al /usr/local/bin
...
等等

在这里插入图片描述

递归查看所有文件

ls -aR

使用stat查看任何文件的更改、创建等时间
在这里插入图片描述

通过lsof命令查看文件和进程调用

  • lsof 列出所有进程调用
  • lsof abc.txt 显示开启文件abc.txt的进程
  • lsof -c abc 显示abc进程现在打开的文件
  • lsof -p 1234 列出进程号为1234的进程所打开的文件
  • lsof -g gid 显示归属gid的进程情况
  • lsof +d /usr/local/ 显示目录下被进程开启的文件
  • lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
  • lsof -d 4 显示使用fd为4的进程
  • lsof -i :port 检查哪个进程使用这个端口
  • lsof -i 用以显示符合条件的进程情况

通过find查找文件大小、近期新增、修改的文件

通过diff命令对比入侵环境和纯净环境
首先要把纯净环境拷贝到PC-x中

diff -r <dir1> <dir2>

分析恶意程序

##查看恶意程序对应路径
ls -al /proc/<pid>/exe

##查看运行进程的名命令及参数
cat /proc/<pid>/cmdline

在这里插入图片描述

##查看恶意文件类型
file /home/light/abc.txt

##查看 ELF文件里带的字符串
strings /tmp/.elf

若恶意程序被删除,可以通过内存转储方式从内存中导出恶意程序

从内存拷贝恢复被删除文件 
cp /proc/[pid]/exe /tmp/malware.dump 

导出进程内存 
cat /proc/[pid]/maps 7ff48bb5d000-7ff48bb5e000 

gdb --pid [pid] 
dump memory /tmp/malware.dump 0x7ff48bb5d000 0x7ff48bb5e000

自动化查杀

chkrootkit

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz 
tar zxvf chkrootkit.tar.gz 
cd chkrootkit-0.53 
make sense 
./chkrootkit

rkhunter

wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz 
或者下面这个
wget https://fossies.org/linux/privat/rkhunter-1.4.6.tar.gz 
tar -zxvf rkhunter-1.4.6.tar.gz 
cd rkhunter-1.4.6 
./installer.sh --install 
rkhunter -c

清除病毒

通过上述调查,查找到了恶意进程

ls -al /proc/<pid>/exe

并定位到了恶意文件存在位置,可以把恶意文件上传到查毒网站进行检查——virustotal。
结束恶意进程

##查找到恶意进程
ps -elf | grep <pid>
##-9强制终止进程
kill -9 <pid>

在这里插入图片描述
在这里插入图片描述

闭环兜底

攻击维持

检查Linux账户
排查系统账号的安全,看是否存在新增可疑、临时、高权限账号。

##查看所有账号
cat /etc/passwd
##查看特权用户(uid为0)
grep :0: /etc/passwd
##查看账号密码相关信息
cat /etc/shadow
##查看用户登录时间
uptime
##查询utmp文件并报告当前登录的每一个用户
who
##查询utmp文件并显示当前系统中每个用户和它队形的进程
w
##列出所有用户最近的登录报告
lastlog
##查看远程SSH和telnet登录
tail /var/log/auth.log
tail /var/log/secure
##查看sudo用户列表
cat /etc/sudoers

##多可以账号进行禁用或删除
usermod -L user        //禁用user账号
userdel user           //删除user账号
userdel -r user        //删除user账号,并将/home目录下的user目录一并删除

检查可疑定时任务

##列出当前用户cron服务详细内容
crontab -l      //文件保存在/var/spool/cron/user

##查看以下目录中是否存在恶意脚本
cat /etc/crontab
* /etc/crontab
* /etc/cron.d/*
* /etc/cron.daily/*
* /etc/cron.hourly/*
* /etc/cron.monthly/*
* /etc/cron.weekly/
* /etc/anacrontab
* /var/spool/cron/*
* /var/spool/anacron/*

检查可疑服务
查看开机自启动
遍历/etc/目录下 init 开头、rc 开头的目录及文件

/etc/init.d

查询开机自启动的服务

service --status-all

服务自启动修改

##第一种修改方法
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 命令管理自启动

检查系统日志
日志存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf

在这里插入图片描述

排查ssh
查看/root/.ssh/known_hosts文件中的ssh公钥,查看本机通过ssh连接那一部分主机

cat /root/.ssh/known_hosts

Web服务补丁

Tomcat弱口令攻击
Weblogic WLS组件漏洞
Jboss反序列化漏洞
structs2系列RCE漏洞
thinkphp5.XRCE漏洞
Redis未授权访问漏洞
ConfluenceRCE漏洞(CVE_2019_3396)
DrupalRCE漏洞(CVE-2018-7600)
ThinkPHPRCE漏洞(CVE-2019-9082)

入侵原因
弱密码/默认密码
通过netstat查看对外开放的服务,确认服务(mysql、redis,zookeeper,tomcat等是否具有配置认证,是否使用的默认密码或弱密码
查看这些服务日志信息,是否存在入侵记录

查看日志
系统日志和应用程序日志

* /var/log/cron 记录了系统定时任务相关的日志
* /var/log/cups 记录打印信息的日志
* /var/log/dmesg 记录了系统在开机时内核自检的信息
* /var/log/mailog 记录邮件信息
* /var/log/message 记录系统重要信息的日志
* /var/log/btmp 记录错误登录日志。 要使用lastb命令查看
* /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志。 要使用lastlog命令查看
* /var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。 要使用last命令查看
* /var/log/utmp 记录当前已经登录的用户信息。要使用w,who,users命令查看
* /var/log/secure 记录验证和授权方面的信息,比如SSH登录,su切换用户,sudo授权

其他web中间件日志,如
apache、mysql、ngnix

查看ssh登录记录

cat /var/log/secure | grep 'Accepted'

恶意进程关联文件
大多数情况恶意进程的父进程都是1,而有些情况下恶意进程的父进程可能不是1,比如父进程是httpd,这种情况下,就可以大胆猜测攻击者是通过利用父进程的漏洞达成攻击。
通过命令ps -ef 查看进程的父进程pid也就是ppid
通过 ps auxef 查看恶意进程启动的用户,如果发现比如是mysql用户启动,那么就可以推断是通过mysql服务入侵。

安全加固

(1)禁用或者删除无用的账号,检查特殊账户(可远程登录、用户权限高的账号),必要时禁止远程登录用户登录,只能本地登录,设置多次登录失败锁定账户。
(2)检查重要的目录和文件的权限,chmod增加权限,防止篡改等。

(3)关闭不必要的服务,跟企业无关的服务可以暂时关闭。
(4)关闭不必要的协议,如ftp、ssh、telnet等,可能存在协议漏洞。
(5)关闭不必要的端口,有一些端口可能存在端口漏洞。 (6)时不时检查安全日志,观察日志信息。
(7)可以使用安全厂商的设备来实时检查,或者使用系统杀毒软件查杀。
(8)修改弱密码或默认密码为强密码
(9)及时升级组件或中间件,添加系统补丁

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/negnegil/article/details/120332020

智能推荐

前端开发之vue-grid-layout的使用和实例-程序员宅基地

文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout

Power Apps-上传附件控件_powerapps点击按钮上传附件-程序员宅基地

文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件

C++ 面向对象(Object-Oriented)的特征 & 构造函数& 析构函数_"object(cnofd[\"ofdrender\"])十条"-程序员宅基地

文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"

修改node_modules源码,并保存,使用patch-package打补丁,git提交代码后,所有人可以用到修改后的_修改 node_modules-程序员宅基地

文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules

【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure-程序员宅基地

文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure

整理5个优秀的微信小程序开源项目_微信小程序开源模板-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板

随便推点

Centos7最简搭建NFS服务器_centos7 搭建nfs server-程序员宅基地

文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server

Springboot整合Mybatis-Plus使用总结(mybatis 坑补充)_mybaitis-plus ruledataobjectattributemapper' and '-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d

EECE 1080C / Programming for ECESummer 2022 Laboratory 4: Global Functions Practice_eece1080c-程序员宅基地

文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c

洛谷p4777 【模板】扩展中国剩余定理-程序员宅基地

文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...

android 退出应用没有走ondestory方法,[Android基础论]为何Activity退出之后,系统没有调用onDestroy方法?...-程序员宅基地

文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy

SylixOS快问快答_select函数 导致堆栈溢出 sylixos-程序员宅基地

文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos

推荐文章

热门文章

相关标签