banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

linux下应急响应(基础知识记录)

查看 cpu 占用率#

查看 cpu 占用率的目的是为了查清是哪个进程占用 cpu 过高 (针对挖矿)

top -c -o %CPU
htop -t

# 查看cpu占用前五的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5

image

内存占用率#

top -c -o %MEM
htop -t

# 查看内存占用前五的进程
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5

网络占用率#

iftop # 需要安装,root权限运行,不会展示进程id
nethogs # 需要安装,root权限运行,展示进程id
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr # 查看本地网卡ip连接数(源ip)
ss -ntu | awk '{print $6}' | cut -d ":" -f1 | sort | uniq -c | sort -nr # 查看目的ip连接数(目的ip)

image.png

外连 ip#

# 根据目的ip查找
netstat -pantu | grep 1.1.1.1
netstat -pantu | grep 3389
lsof -i:3389 # root权限
# 根据本机ip查找
netstat -pantu | grep 3389
lsof -i:3389

寻找恶意样本#

  • 获取 PID - 找到恶意文件路径
  • 找到了恶意文件 - PID

根据进程名字或者部分字符串获取 pid

pidof "name"
ps -aux | grep "name"
ps -ef | grep "name" | grep -v grep | awk '{print $2}'
pgrep -f "name"

image

根据 pid 获取进程的详细信息

lsof -p PID # root权限
pwdx PID # root权限,获取该PID的进程启动时候的目录,也就是恶意文件启动的路径
systemctl status PID # 获取这个进程的status信息
cat /proc/PID/maps # 输出指定进程的内存映射信息
ls -al /proc/1505945/exe # 输出指定进程所执行的程序的绝对路径
cat /proc/$$/mountinfo # 查看当前进程所挂载的文件系统信息,其中,$$ 表示当前进程的进程 ID (PID)。

查看线程

ps H -T -p PID # pid是进程id,spid是线程id,CMD 表示进程/线程的命令行
ps -Lf PID # 显示指定进程中各个线程的信息
pstree -agplU # 显示系统中所有的进程关系 ✅

根据文件找 PID

lsof | grep FILENAME
lsof FILENAME
fuser FILENAME # 用于查找使用特定文件或套接字的进程的命令

确定程序运行时间#

ps -eo pid,lstart,etime,cmd | grep  PID

# 对比恶意文件的创建时间
stat FILENAME
ls -al FILENAME

image

处理异常进程#

1、从服务器上下载样本
2、病毒在线分析
3、进程查杀

1、查看是否存在子进程
ps ajfx
systemctl status

2、如果无子进程
kill -9 PID

3、如果存在子进程
kill -9 -PID

删除恶意文件#

1、查看进程是否占用

lsof FILENAME

2、如果遇到 a 和 i 属性导致文件不可删除

chattr -a
chattr -i

3、奇怪文件名导致不能删除

  • 使用 inode 节点进行删除
ls -li FILENAME # 查看inode

image

  • 删除文件
find ./* -inum INODE -delete
find ./ -inum INODE -exec rm {} \;
find ./* -inum INODE -exec rm -i {} \; # 提示是否删除
find ./* -inum INODE -exec rm -f {} \; # 强制删除
find ./* -inum INODE | xargs rm -rf
rm `find ./* -inum INODE`

大部分的应急事件的流程大概需要的命令也就是这些了,针对不同的事件还有一些区别:

扩展 1 netstat 中 TCP 连接状态的示例#

状态           类型                描述                                                                                                            
LISTEN        TCP 监听端口         侦听状态。表示该端口正在等待对端的连接,以进行通信。                                                         
SYN_SENT      TCP 传输控制协议状态 已经发送连接请求。表示 TCP 连接已经被发起,但是尚未收到确认。                                                 
SYN_RECV      TCP 传输控制协议状态 正在接收连接请求。表示 TCP 连接已经被接收,正在等待确认。通常在服务器上才会出现,表示已经接收到客户端的请求。
ESTABLISHED   TCP 传输控制协议状态 表示 TCP 连接已经建立,正在通信中。                                                                             
FIN_WAIT1     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,在等待对方关闭连接的请求。                                                           
FIN_WAIT2     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,在等待对方关闭连接的请求,或者正在从对方接收最终确认。                             
TIME_WAIT     TCP 传输控制协议状态 表示 TCP 连接已经被关闭,并且所有数据都传输完毕,正在等待一段时间以确保所有分组都得到处理。                   
CLOSE_WAIT    TCP 传输控制协议状态 表示 TCP 连接已经被关闭,但是本地应用程序尚未关闭连接。                                                       
LAST_ACK      TCP 传输控制协议状态 已经发送关闭请求,正在等待对方的关闭请求。                                                                    
CLOSING       TCP 传输控制协议状态 表示 TCP 连接正在关闭过程中。                                                                                   

扩展 2 ip 是否正常#

三步走:威胁情报查询-域名备案-企业查询

微步威胁情报可以查询到一些信息

image.png

还可以查询如下等信息

image.png

有域名就可以查备案(国内)

image.png

有备案就可以查公司

image.png

其他#

GitHub - T0xst/linux: linux 安全检查
Security/1earn/Security/BlueTeam/ 应急
Blue-Team / 应急 /linux 应急响应手册
linux 应急响应手册 1.7

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。