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

智能推荐

matlab fft的用法,MATLAB中FFT的使用方法(频谱分析)-程序员宅基地

文章浏览阅读3.1k次。MATLAB中FFT的使用方法(频谱分析) 说明:以下资源来源于《数字信号处理的 MATLAB 实现》万永革主编一.调用方法X=FFT(x);X=FFT(x,N) ;x=IFFT(X);x=IFFT(X,N)用 MATLAB 进行谱分析时注意:(1)函数 FFT 返回值的数据结构具有对称性。例:N=8;n=0:N-1;xn=[4 3 2 6 7 8 9 0];Xk=fft(xn)→Xk =39.0..._matlab的fft频谱对称?

net包之Lookup-程序员宅基地

文章浏览阅读424次。Lookup所有相关的函数全在net包下的doc.go中LookupHost(host string) (addrs []string, err error)对某个主机名执行DNS查询,返回主机名,注意返回的是字符窜slice.可能有多个IP地址 addr, _ := net.LookupHost("www.baidu.com") fmt.Println(addr) // ..._net.lookhost

有这5款开源软件,语音转文字很简单!-程序员宅基地

文章浏览阅读2.2w次,点赞13次,收藏136次。来自:开源最前线(ID:OpenSourceTop)链接:https://fosspost.org/lists/open-source-speech-recognition-speec..._c语言 开源 图片转文字

使用Docker创建 php 运行环境,以php5为例_dockerfile from php5-程序员宅基地

文章浏览阅读2.7k次。原文第一版发表于我的个人空间:https://www.imhou.com写在前面:项目过程中,有些需要维护的项目是用的php5版本,但是新项目却是用的php7版本,难免在代码和服务器上有些许不兼容,导致在一台服务器上搭建环境也不太好配置,要考虑软件的兼容问题,实在麻烦。所以就想到用Docker来创建镜像,各自运行在对应的容器中,互不干扰,很好地利用来服务器资源。准备:阿里云账户..._dockerfile from php5

Maven 修改tomcat运行版本和端口,使用Maven发布项目_tomcat8-maven-plugin 修改t端口-程序员宅基地

文章浏览阅读5.6k次。maven默认是使用tomcat6跑项目的,这段是让maven用tomcat7去跑在pom.xml中添加&lt;build&gt; &lt;!-- we dont want the version to be part of the generated war file name --&gt; &lt;finalName&gt;${project.artifactId}&lt..._tomcat8-maven-plugin 修改t端口

vdbench数据校验翻译_vdbench 'data_errors=50' requested-程序员宅基地

文章浏览阅读1.2k次。本文翻译自vdbench的使用手册中的数据校验章节,如有纰漏,还请不吝赐教。vdbench源码下载地址:https://www.oracle.com/downloads/server-storage/vdbench-source-downloads.html数据校验在性能测试的时候不应该被使用,处理器开销可能影响性能测试的结果。在我开始之前,我想问一个想了很多次的问题:“为什么我使用vdbench去检查数据冲突?我也可以写一个大文件,计算校验和,然后重新读这个文件并比较校验和。”当然,你可._vdbench 'data_errors=50' requested

随便推点

Intel Realsense 如何获取输入图像的分辨率参数?傻办法 asanyarray() shape() get_data()_realsense 获取分辨率-程序员宅基地

文章浏览阅读1k次。很傻的办法:将输入的深度帧和彩色帧分别转换成numpy数组后,再分别获取数组的shape参数:import numpy as npimport pyrealsense2 as rspipeline = rs.pipeline()config = rs.config()config.enable_stream(rs.stream.color, 424, 240, rs.format.b..._realsense 获取分辨率

Git基础-删除文件 rm/git rm 命令详解-程序员宅基地

文章浏览阅读1.4w次,点赞23次,收藏73次。1.文章概述本文介绍git中删除文件的操作;主要涉及命令如下 : 1.rm 2.git rm 3.git rm -f 4.git rm --cached 5.git rm -r : 在删除文件夹的时候,使用参数 -r 表示循环删除文件夹中的内容(不做详细介绍)【注意】:以下介绍的内容都是在 被删除文件 已经纳入版本控制 的前提下。2.rm命令介绍1.rm 是linux中的删除命令;2.rm 命令的效果就如同我们在 windows 下直接使用右键删除_git rm

matlab polyfit 拟合度,Matlab中polyfit和regress-程序员宅基地

文章浏览阅读1.2k次。1.表中是道琼斯工业指数(DJIA)和标准普尔500种股票指数(S&P500)1988年至1997年对应股票的收益率资料:年份DJIA收益率(%)S&P500收益率(%)年份DJIA收益率(%)S&P500收益率(%)198816.016.6199316.810.1198931.731.519944.91.31990-0.4-3.2199536.437.6199123.93..._matlab polyfit f检验显著性检验

单片机实现PWM LED灯亮度调节及Proteus仿真_单片机pwm控制led亮度程序-程序员宅基地

文章浏览阅读694次。通过调节PWM占空比,我们可以控制LED的亮度。为了实现这一功能,我们可以利用单片机的PWM(脉冲宽度调制)功能来调节LED的亮度。在仿真过程中,你将看到LED的亮度逐渐增加然后逐渐降低,这是由代码中的循环控制的。通过这种方式,我们可以验证代码的正确性,并确保LED的亮度可以按预期进行调节。首先,将单片机的一个PWM输出引脚连接到LED的正极,将LED的负极连接到单片机的地(GND)引脚。确保连接正确无误后,我们可以开始编写代码。下面是一个简单的示例代码,演示如何使用单片机的PWM功能来控制LED的亮度。_单片机pwm控制led亮度程序

ubuntu 下播放 yuv 格式的文件&预览Raw格式图片_安装ufraw-程序员宅基地

文章浏览阅读7k次,点赞6次,收藏20次。1、ubuntu 下播放 yuv 格式的文件1)使用ffplaysudo apt-get install ffmpeg查看图片ffplay -f rawvideo -video_size 640x360 test_input_640x360_bak.yuv另外,windows下面可以使用yuvplayer.exe,打开需要设置size,软件下载链接http://..._安装ufraw

Android 集成zxing二维码扫描、自定义_scanoptions scancontract zxing-程序员宅基地

文章浏览阅读7.4k次,点赞6次,收藏16次。项目主要有zxing的基本使用,包含扫描回调、连续扫描、自定义扫描框:一、依赖库implementation 'com.journeyapps:zxing-android-embedded:4.3.0'Github这个库是zxing Android端的,封装了一些基本的使用方法二、基本使用这里使用的是startActivityForResult的替代方法,registerForActivityResult..._scanoptions scancontract zxing

推荐文章

热门文章

相关标签