记录一些在攻击溯源中常用到的溯源命令,持续更新:
linux主机层溯源常用命令:
代码语言:shell复制scp远程上传:
scp my_local_file.zip root@192.168.1.104:/usr/local/nginx/html/webs
scp远程下载:
scp root@192.168.1.104:/usr/local/nginx/html/webs/about.zip .
查看root用户历史操作命令:
history
查看当前用户与他运行的进程信息
w
查看当前登录的用户,默认输出用户名,终端类型,登录日期和远程主机
who
用单独一行打印当前登录的用户,每个用户对应一个登录会话,如果某用户登录不止一个会话,显示相同次数
users
查看本机器每个用户最后一次成功登录记录
lastlog
查看每个用户登录,注销及系统启动,停机事件
last
查看登录失败用户,时间及远程IP地址,使用lastb进行查看。单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容
记录的登入失败的用户名单,全部显示出来。
lastb
最近爆破数量
lastb|wc -l
查看异常端口占用情况:
netstat -antlp|more
查看下pid对应的进程文件路径($PID为对应的pid号):
ls -l /proc/$PID/exe
或
file /proc/$PID/exe
查看自启动脚本:
ubuntu自启动脚本路径(/etc/init.d):
ls -alt /etc/init.d
centOS自启动脚本路径(/etc/rc.d/init.d):
ls -alt /etc/rc.d/init.d
chkconfig
systemctl list-unit-files
查看50分钟内修改的文件:
find ./ -cmin -50 -name "*.php"
查看进程占用情况:
ps -ef|grep xxx
查找哪些IP存在登录失败(大概率为暴力破解的):
grep "Failed pass" /var/log/secure|awk '{print $13}'|egrep '[0-8] .'|sort |uniq -c
查找暴力破解的用户和字典(即寻找暴力破解过程中登录失败的用户名):
grep "Failed pass" /var/log/secure|egrep invalid|awk '{print $11}'|sort |uniq -c
查找登录成功的用户IP:
grep "Accept" /var/log/secure|awk '{print $9" "$11}'|sort|uniq -c
定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr| more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr
登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
查看日志中新增的用户:
grep "useradd" /var/log/secure
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001,
home=/home/kali, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
删除用户kali日志:
grep "userdel" /var/log/secure
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
su切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
sudo授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root;
COMMAND=/sbin/shutdown -r now
打开审计日志:
service auditd start / systemctl start auditd
持久启动审计日志:
chkconfig add auditd / systemctl enable auditd
查看两个文件不同处:
diff -c -a -r cms1 cms2
查看指定目录下文件时间的排序
ls -alt | head -n 10
使用zcat 打开压缩包,根据新生成的文件asdfasd快速定位日志位置的方法:
zcat access_2020-12-2* |grep asdfasdf
通过端口查看对应进程PID:
netstat -ano| findstr "3389"
通过进程查看对应PID:
tasklist | findstr “PID”
查寻特权账户(uid为0):
awk -F: '$3==0{print $1}' /etc/passwd
查询可以远程登录的账号信息:
awk '/$1|$6/{print $1}' /etc/shadow
查询除了root账号外,其他账号是否存在sudo权限:
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)*"
各子账号操作过的命令:路径为/home/账号名/.bash_history
vim /home/ubuntu/.bash_history
检查异常进程:
ps aux|grep $PID
检查系统开机后处于哪个级别:
运行级别含义
0 关机
1 单用户模式,可以想象为windows的安全模式,主要用于系统修复
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式
6 重启动
virr /etc/inittab
查找777的文件
find / *.php -perm 4777
登录日志审计:
last > last.log
who /var/log/utmp #当前用户登录情况及IP地址记录
who /var/log/wtmp #当前用户登录记录及IP地址记录
cat /var/log/lastlog #最后登录日志
cat /var/log/secure #登录日志,成功失败都有
cat /var/log/faillog #登录失败日志,未必有
cat /var/log/cron #计划任务,恶意程序、木马后门启动集中地或者cd /etc/crontab && ls
cat ~/.bash_history 记录操作指令,但是最好有shelllog,因为shelllog是内核hook的,及时攻击者敲了unset history也可以记录操作
#有异常进程和连接先干掉,从甲方首先保障回复切断攻击,保护自己然后再开始分析入侵细节。从乙方来说也可以避免干扰。
日志查看:tail -f /var/log/apport.logmore /var/log/xorg.0.logcat /var/log/mysql.errless /var/log/messagesgrep -i fail /var/log/boot