Windows/Linux入侵日志排查
前言
平时工作中经常要遇到帮助客户查找入侵痕迹,溯源,修漏洞等工作,一般都会到现场去看看情况,这个时候就需要分析日志来发现服务器是如何被入侵的,记录整合一下网上常见的入侵排查方法。
Windows
检查系统账号安全
查看服务器是否有弱口令,远程管理端口是否对公网开放
3389,如果不是的话使用tasklist /svc |findstr Term 找到3389的替换端口->netstat -ano |findstr 2104
查看服务器是否存在可疑账号、新增账号。(net user)
D盾一把梭
结合系统登陆日志,查看管理员登录时间、用户名是否存在异常。
Win+R打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”。
导出Windows日志–安全,利用Log Parser进行分析
检查异常端口、进程
检查端口连接情况,是否有远程连接、可疑连接。
netstat -ano 查看目前的网络连接,定位可疑的ESTABLISHED
根据netstat 定位出的pid,再通过tasklist命令进行进程定位 tasklist | findstr “PID”
进程
开始–运行–输入msinfo32,依次点击“软件环境→正在运行任务”就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期、启动时间等。
Process Explorer
查看可疑的进程及其子进程(进程的路径是否合法,CPU或内存资源占用长时间过高的进程,没有描述信息的进程,没有签名验证信息的进程)
tricks
tasklist /svc 进程–PID–服务
查看Windows服务所对应的端口: %system%/system32/drivers/etc/services(一般%system%就是C:\Windows)
检查启动项、计划任务、服务
检查服务器是否有异常的启动项
登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。
msconfig,查看是否存在命名异常的启动项目
查看
HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce HKEY_CURRENT_USER\Environment\UserInitMprLogonScript HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit HKEY_CURRENT_USER\Software\Classes\CLSID\ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
是否有异常键值
检查计划任务
【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性
【开始】>【运行】;输入 cmd,然后输入at,检查计算机与网络上的其它计算机之间的会话或计划任务, 如有,则确认是否为正常连接。
services.msc,注意服务状态和启动类型,检查是否有异常服务。
取证工具
- Fastir_Collector
- SIFT – SANS调查取证工具包
- ProDiscover Forensic
- Volatility Framework
- Sleuth Kit (+Autopsy)
- CAINE
- Xplico
- X-Ways Forensics
Linux
系统日志:
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
服务
chkconfig –list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
/etc/re.d/rc.local 自启动
/etc/rc.d/init.d/
定时任务
crontab命令:
1
2
3
4
5
6
7
8
9
crontab -l
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
rontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件/etc/anacrontab
rc.loacl
1
2
3
4
/etc/rc.local
/etc/rc.d/rc[0~6].d重点文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
常用命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22who 查看当前登录用户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
histroy
/etc/passwd
/etc/shadow
awk -F: '$3==0{print $1}' /etc/passwd 查询特权用户特权用户
awk '/\$1|\$6/{print $1}' /etc/shadow 查询可以远程登录的帐号信息
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 除root帐号外,其他帐号是否存在sudo权限
userdel user 删除user用户
userdel -r user 将删除user用户,并且将/home目录下的user目录一并删除
netstat -ano
ps aux | grep pid
lsof -p pid 查看进程所打开的端口及文件
lsof -c 进程名 查看关联文件
ps -aux | grep python | cut -d ' ' -f 2 | xargs kill 杀死python相关的进程
diff 1 2
find / -uid 0 -print 查找特权用户文件
lsof -i
arp -a 查看arp记录是否正常
vim $HOME/.ssh/authorized_keys 查看ssh永久链接文件
chkconfig –list/systemctl list-units –type=service 检查自启
Windows/Linux入侵日志排查
install_url
to use ShareThis. Please set it in _config.yml
.