应急响应——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

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签