一、应急响应 1.1 什么是应急响应 应急响应,指的是在应对突发事件或危机情况时采取的及时有效措施,以控制和减轻事件带来的影响,保障安全。 在检测到网络安全事件(如黑客攻击、数据泄露、系统入侵等)后,组织采取的一系列预定义的行动和程序,以最小化损失和影响,恢复正常运营,并防止未来的安全威胁。
1.2 PDCERF模型
准备阶段 准备阶段以预防为主。主要工作涉及识别机构、企业的风险,建立安全政策,建立协作体系和应急制度。按照安全政策配置安全设备和软件,为应急响应与恢复准备主机。依照网络安全措施,进行一些准备工作,例如,扫描、风险分析、打补丁等。如有条件且得到许可,可建立监控设施,建立数据汇总分析体系,制定能够实现应急响应目标的策略和规程,建立信息沟通渠道,建立能够集合起来处理突发事件的体系。
一般现象
业务服务功能失效
业务内容被明显篡改
系统文件丢失
系统崩溃、卡顿、资源不足
检测阶段 检测阶段主要检测事件是已经发生的还是正在进行中的,以及事件产生的原因。确定事件性质和影响的严重程度,以及预计采用什么样的专用资源来修复。选择检测工具,分析异常现象,提高系统或网络行为的监控级别,估计安全事件的范围。通过汇总,查看是否发生了全网的大规模事件,从而确定应急等级及其对应的应急方案。
遏制阶段 抑制阶段的主要任务是限制攻击/破坏波及的范围,同时也是在降低潜在的损失。所有的抑制活动都是建立在能正确检测事件的基础上的,抑制活动必须结合检测阶段发现的安全事件的现象、性质、范围等属性,制定并实施正确的抑制策略。
抑制策略
从网络上断开主机或断开部分网络
封禁攻击来源IP
修改所有的防火墙和路由器的过滤规则
封锁或删除被攻击的登录账号
关闭受攻击的系统或其他相关系统的部分服务
完全关闭所有系统
根除阶段 根除阶段的主要任务是通过事件分析找出根源并彻底根除,以避免攻击者再次使用相同的手段攻击系统,引发安全事件。并加强宣传,公布危害性和解决办法,呼吁用户解决终端问题。加强监测工作,发现和清理行业与重点部门问题。
恢复阶段 恢复阶段的主要任务是把被破坏的信息彻底还原到正常运作状态。确定使系统恢复正常的需求内容和时间表,从可信的备份介质中恢复用户数据,打开系统和应用服务,恢复系统网络连接,验证恢复系统,观察其他的扫描,探测可能表示入侵者再次侵袭的信号。一般来说,要想成功地恢复被破坏的系统,需要干净的备份系统,编制并维护系统恢复的操作手册,而且在系统重装后需要对系统进行全面的安全加固。
总结阶段 总结阶段的主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生。基于入侵的严重性和影响,确定是否进行新的风险分析,给系统和网络资产制作一个新的目录清单。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。
工作内容
形成事件处理的最终报告
总结响应过程
评估应急响应人员相互沟通在事件处理上存在的缺陷
二、windows 2.1 系统层面 2.1.1 特殊目录 1 2 3 4 5 %windwos% C:\WINDOWS %windwos%\system32\ C:\WINDOWS\system32\ %temp% C:\Users\用户\AppData\Local\Temp %localappdata% C:\Users\用户\AppData\Local %appdata% C:\Users\用户\AppData\Roaming
2.1.2 快捷命令 1 2 3 4 5 6 7 8 regeidt 注册表 taskmgr 任务管理器 eventvwr.msc 事件查看器 compmgmt.msc 计算机管理 gpedit.msc 本地组策略 taskschd 计划任务 lusrmgr.msc 本地用户和组 msconfig 系统配置
2.1.3 常用命令 1 2 3 4 5 6 7 8 9 10 11 net user 查看用户信息 net localgroup 查看本地用户组 net session 查看当前会话 net start 当前执行的服务 net shart 查看本地共享 net use 查看正常使用的共享 -------------------------------------------------------- schtasks 查看计划任务 sc stop 服务名 关闭服务 sc start 服务名 开启服务 sc delete 服务名 删除服务
2.1.4 系统日志 1 日志路径:%SystemRoot%\System32\Winevt\Logs\System.evtx
事件编号
2.1.5 启动项 1 2 3 4 5 6 7 net statistics workstation 查看系统开机时间 schtasks /query /fo LIST /v 查看系统计划任务 wmic startup get command,caption 查看程序启动信息 wmic service list brief 查看主机服务信息 eventvwr.msc 日志查看器 msconfig 打开系统配置 msinfo32 系统信息
2.1.6 用户 1 2 3 4 5 6 7 8 9 10 11 12 13 14 方法1: net user 查看用户(但是看不到隐藏用户) net user username 查看用户详细信息 方法2: lusrmgr.msc 查看系统现用的用户(可以看到隐藏用户) 方法3: regedit->HKEY_LOCAL_MACHINE->SAM->SAM->Domains->Account->Users->Names 查看全部用户信息(最真实) 方法4: wmic useraccount get name,SID query user 查看当前登录系统的会话 logoff ID 将用户踢下线 net config workstation 查看当前工作环境
2.1.7 网络连接和进程 1 2 3 4 5 6 7 8 9 10 11 12 13 14 网卡信息 ipconfig /all 查看网络信息 systeminfo 系统信息 regedit 打开注册表 ------------------------------------------------------------------- 网络连接情况 netstat -ano 列出主机TCP/UDP端口连接情况 route print 打印路由表 REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" 查看本机网络代理配置情况 ------------------------------------------------------------------- 进程信息 tasklist /svc 列出所有进程及其服务 taskkill /T /F /PID 强制关闭某进程
2.2 网站层面 2.2.1 Web日志 找到中间件的web⽇志,打包到本地⽅便进⾏分析。 利用关键字搜索或者工具筛查
2.2.2 webshell查杀 D盾_Web查杀:http://www.d99net.net/index.asp 河⻢ WebShell 查杀:http://www.shellpub.com
2.3 入侵排查 2.3.1 账号安全 检查系统账号安全
弱口令、端口开发情况
查看系统用户账号(lusrmgr.msc)
D盾查杀注册表(是否有克隆账号)
日志审查(eventvwr.msc->事件查看器->windows日志->安全导出->使用Log Parser进行分析)
2.3.2 端口进程 检查异常端口、进程
用 netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED
进行进程定位 tasklist | findstr “PID”
msinfo32->软件环境->正在运行的任务->再使用Process Explorer进行排查
2.3.3 启动项、计划任务、服务 检查启动项、计划任务、服务自启动
排查启动项
排查注册表启动项(注册表路径如下)1 2 3 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
检查计划任务(cmd->schtasks.exe)
services.msc 查看是否有可疑自启动服务
2.3.4 Web 访问⽇志
找到中间件的web⽇志,打包到本地⽅便进⾏分析。
推荐⼯具:Windows 下,推荐⽤ EmEditor 进⾏⽇志分析,⽀持⼤⽂本,搜索效率还不错。Linux 下,使⽤ Shell 命令组合查询分析。
工具推荐部署linux上web访问 fulleventlogview工具分析
2.4 工具 2.4.1 木马病毒
PCHunter
⽕绒剑
Process Explorer
processhacker
autoruns
OTL
SysInspector
2.4.2 木马查杀
卡巴斯基
⼤蜘蛛
⽕绒安全软件
360杀毒
2.4.3 威胁情报
CVERC-国家计算机病毒应急处理中⼼
微步在线威胁情报社区
⽕绒安全论坛
爱毒霸社区
腾讯电脑管家
2.4.4 在线查杀
Virustotal
Virscan
腾讯哈勃分析系统
Jotti 恶意软件扫描系统
三、Linux 3.1 系统层面 3.1.1 特殊目录 1 2 3 4 5 6 7 /etc/passwd 用户信息文件 /etc/rc.d/rc.local 开机启动项 /etc/init.d/ 开机启动项 /root/.ssh root用户ssh公私钥 /tmp 临时目录 /etc/hosts 本机域名解析文件 /var/log/ 日志目录
3.1.2 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ls -al 查看目录文件信息 free -h 内存使用率 ps -aux|elf 进程信息 top 进程cpu信息 netstat -antlp/anulp 查看网络连接信息 ls -alh /proc/pid 查看进程(与上面的命令进行结合使用)看exe项就是执行的程序 lsos -i:port 查询端口执行的程序 lsof -p pid 查询进程打开的文件 lsof -u 用户名 查询用户打开的文件 cat /etc/passwd | cut -f 1 -d :| xargs -l {} crontab -l -u {} 查询所有用户的计划任务 cat /etc/crontab 计划任务 crontab -l 计划任务 ------------------------------------------------------------ chkconfig 查看开机启动项目 chkconfig --list 查看服务自启状态 systemctl list-unit-files |grep enabled ubuntu,centos及使用systemctl控制的系统 ------------------------------------------------------------ last 查询用户登录历史记录 lastb 查询用户的登陆失败记录 lastlog 查询用户最后一次登录日志
3.1.3 系统日志位置 1 2 3 4 5 6 7 8 9 10 /var/log/messages 系统重要信息 /var/log/auth.log ubuntu系统 /var/log/secure 记录授权方面信息 /var/log/maillog 记录电子邮件日志 /var/log/cron 计划任务日志 /var/log/bioot.log 系统启动日志,包括自启动服务 /var/log/dmesg 内核信息 /var/log/bmtp 所有登录失败的日志 /var/log/wtmp 用户每日登录和退出的永久日志 /var/log/lastlog 记录所有用户的最近登录信息
3.1.4 用户相关 1 2 3 4 5 6 7 8 grep "useradd" /var/log/secure 查看是否有添加用户操作 grep "userdel" /var/log/secure 查看是否有删除用户操作 usermod -L username 锁定用户 userdel username 删除用户 用户命令记录 cat /home/用户名/.bash_history root/.bash_profile root用户记录
/etc/passwd
存放用户信息用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow
存放用户密码用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
加密方式
1 代表 MD5 2y、2a代表Blowfish 5 代表 SHA-256 6 代表 SHA-512
3.1.5 系统日志
ubuntu1 2 3 4 5 6 7 8 9 10 11 是否被爆破 cat /var/log/auth.log | grep "Failed password for root" 记录登陆的用户 cat /var/log/auth.log | grep "Accept" 计算登录失败的用户名及次数 cat /var/log/auth.log | grep "Failed password" | perl -e 'while($_=<>){ /for(.*?)from/; print "$1\n";}'|sort|uniq -c|sort -nr 统计爆破者ip及次数 cat /var/log/auth.log | grep "Failed password for" | grep "root" | grep -Po '(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])(\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}' |sort|uniq -c|sort -nr
centos1 2 3 4 5 6 7 8 9 10 11 12 13 14 定位有多少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 "$1\n";}'|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}'
3.2 网站层面 3.2.1 Web日志
日志位置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -------------------------------------------------------- Apache服务器的访问日志位于 /var/log/apache2/access.log(在Debian/Ubuntu系统中) 或/var/log/httpd/access_log(在RHEL/CentOS系统中) ======================================================== 配置文件位置 /etc/apache2/sites-available/000-default.conf(Debian/Ubuntu) 或/etc/httpd/conf/httpd.conf(RHEL/CentOS)中查找CustomLog指令 -------------------------------------------------------- Nginx的访问日志位于/var/log/nginx/access.log ======================================================== 配置文件位置 /etc/nginx/nginx.conf 或/etc/nginx/sites-available/default中查找access_log指令 -------------------------------------------------------- Lighttpd的访问日志位于/var/log/lighttpd/access.log ======================================================== 配置文件位置 /etc/lighttpd/lighttpd.conf 或/etc/lighttpd/lighttpd.conf.d/accesslog.conf中查找accesslog指令。 --------------------------------------------------------
技巧1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 列出当天访问次数最多的IP命令 cut -d- -f 1 log_file | uniq -c | sort -rn | head -20 查看当天有多少个IP访问 awk '{print $1}' log_file|sort|uniq|wc -l 查看某⼀个⻚⾯被访问的次数 grep "/index.php" log_file | wc -l 查看每⼀个IP访问了多少个⻚⾯ awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file 将每个IP访问的⻚⾯数进⾏从⼩到⼤排序 awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n 查看某⼀个IP访问了哪些⻚⾯ grep ^111.111.111.111 log_file| awk '{print $1,$7}' 去掉搜索引擎统计当天的⻚⾯ awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l 查看2018年6⽉21⽇14时这⼀个⼩时内有多少IP访问 awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l ======================================================== 统计爬虫 grep -E 'Googlebot|Baiduspider' /www/logs/access.2019-02-23.log | awk '{ print $1 }' | sort | uniq 统计浏览器 cat /www/logs/access.2019-02-23.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head - n 100 统计ip grep '23/May/2019' /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10 统计网段 cat /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200 统计域名 cat /www/logs/access.2019-02-23.log |awk '{print $2}'|sort|uniq -c|sort -rn|more 请求状态码 cat /www/logs/access.2019-02-23.log |awk '{print $9}'|sort|uniq -c|sort -rn|more URL 统计 cat /www/logs/access.2019-02-23.log |awk '{print $7}'|sort|uniq -c|sort -rn|more
3.2.2 Webshell查杀
D盾
河马
牧云
牧云下载地址
PHP Malware Finder 1 2 3 4 5 6 7 自动化 -------------------------------------------------------------- https://github.com/grayddq/GScan https://github.com/al0ne/LinuxCheck https://github.com/ppabc/security_check https://github.com/T0xst/linux https://github.com/P4ck/Emergency
恶意函数1 2 3 PHP:eval(、system(、assert( JSP:getRunTime(、 FileOutputStream( ASP:eval(、execute(、 ExecuteGlobal(
脚本1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #! /bin/bash echo "-------------------------机器名-------------------------" hostname echo "-------------------------查看用户信息-------------------------" cat /etc/passwd |grep -v nologin |grep -v /bin/falseecho "-------------------------查看登录信息-------------------------" w echo "-------------------------查看正在连接的IP-------------------------" netstat -antlp |grep ESTABLISHED echo "-------------------------查看对外监听的端口-------------------------" netstat -antlp |grep LISTEN | grep -v 127.0.0.1 echo "-------------------------查看历史登录信息-------------------------" last -F -n 10 echo "-------------------------查看安全日志中登录成功信息-------------------------" grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}' echo "-------------------------查看历史命令,查找外联-------------------------" history | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" echo "-------------------------查看计划任务-------------------------" crontab -l echo "-------------------------查找隐藏文件-------------------------" find / ! -path "/proc/*" ! -path "/usr/*" ! -path "/var/*" ! -path "/sys/*" -name ".*" -print echo "-------------------------其他·提示-------------------------" echo "查看用户进程:lsof -u hack" echo "查看端口占用:lsof -i:8888" echo "查看公钥信息:~/.ssh/id_dsa.pub" echo "查看进程:ps -aux"
3.3 勒索
深信服
360
奇安信
腾讯
VenusEye
3.4 入侵排查 3.4.1 账号安全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ⽤户信息⽂件 /etc/passwd ⽤户名:密码:⽤户ID:组ID:⽤户说明:家⽬录:登陆之后的 shell 注意:⽆密码只允许本机登陆,远程不允许登陆 ----------------------------------------------------------------- 密码文件 /etc/shadow ⽤户名:加密密码:密码最后⼀次修改⽇期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密 码过期之后的宽限天数:账号失效时间:保留 who 查看当前登录⽤户(tty 本地登陆 pts 远程登录) w 查看系统信息,想知道某⼀时刻⽤户的⾏为 uptime 查看登陆多久、多少⽤户,负载状态 ----------------------------------------------------------------- 1、查询特权⽤户特权⽤户(uid 为0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd 2、查询可以远程登录的帐号信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow 3、除root帐号外,其他帐号是否存在sudo权限。如⾮管理需要,普通帐号应删除sudo权限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 4、禁⽤或删除多余及可疑的帐号 usermod -L user 禁⽤帐号,帐号⽆法登录,/etc/shadow 第⼆栏为 ! 开头 userdel user 删除 user ⽤户 userdel -r user 将删除 user ⽤户,并且将 /home ⽬录下的 user ⽬录⼀并删除
3.4.2 历史命令 history .bash_history文件 进⼊⽤户⽬录下,导出历史命令。 cat .bash_history >> history.txt
3.4.3 端口信息 netstat -antlp | more 查看下 pid 所对应的进程⽂件路径, 运⾏ ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID为对应的pid号)
3.4.4 进程信息 ps -aux | grep pid
ps -elf | grep pid
3.4.5 开机启动项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 查看运⾏级别命令 runlevel 系统默认允许级别 vi /etc/inittab id =3:initdefault ----------------------------------------------------------------- 开机启动配置⽂件 /etc/rc.local /etc/rc.d/rc[0~6].d 例⼦:当我们需要开机启动⾃⼰的脚本时,只需要将可执⾏脚本丢在 /etc/init.d ⽬录下,然后在 /etc/rc.d/rc*.d ⽂件中建⽴软链接即可。 此中的 * 代表 0,1,2,3,4,5,6 这七个等级 软连接:ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh 此处sshd是具体服务的脚本⽂件,S100ssh是其软链接,S开头代表加载时⾃启动;如果是K开头的脚本⽂件,代 表运⾏级别加载时需要关闭的。 ----------------------------------------------------------------- 启动项⽂件 more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
3.4.6 检查定时任务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 利⽤ crontab 创建计划任务 crontab -l 列出某个⽤户cron服务的详细内容 Tips:默认编写的crontab⽂件会保存在 (/var/spool/cron/⽤户名 例如: /var/spool/cron/root crontab -r 删除每个⽤户cront任务(谨慎:删除所有的计划任务) crontab -e 使⽤编辑器编辑当前的crontab⽂件 如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写⼊⽂件 ----------------------------------------------------------------- 利⽤ anacron 命令实现异步定时任务调度 例如: 每天运⾏ /home/backup.sh 脚本: vi /etc/anacrontab @daily 10 example.daily /bin/bash /home/backup.sh 当机器在 backup.sh 期望被运⾏时是关机的,anacron会在机器开机⼗分钟之后运⾏它,⽽不⽤再等待7天。 ----------------------------------------------------------------- 重点关注以下目录 /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/* more /etc/cron.daily/* 查看⽬录下所有文件
3.4.7 检查服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 服务⾃启动 第⼀种修改⽅法: chkconfig [--level 运⾏级别] [独⽴服务名] [on|off] chkconfig –level 2345 httpd on 开启⾃启动 chkconfig httpd on (默认level是2345) 第二种修改⽅法: 修改 /etc/re.d/rc.local ⽂件 加⼊ /etc/init.d/httpd start 第三种修改⽅法: 使⽤ ntsysv 命令管理⾃启动,可以管理独⽴服务和 xinetd 服务。 ----------------------------------------------------------------- 查询已安装的服务: RPM 包安装的服务 chkconfig --list 查看服务⾃启动状态,可以看到所有的RPM包安装的服务 ps aux | grep crond 查看当前服务 系统在3与5级别下的启动项 中⽂环境 chkconfig --list | grep "3:启⽤\|5:启⽤" 英⽂环境 chkconfig --list | grep "3:on\|5:on" 源码包安装的服务 查看服务安装位置 ,⼀般是在/user/local/ service httpd start 搜索/etc/rc.d/init.d/ 查看是否存在
3.4.8 检查异常⽂件 1 2 3 4 1、查看敏感⽬录,如/tmp⽬录下的⽂件,同时注意隐藏⽂件夹,以".."为名的⽂件夹具有隐藏属性 2、得到发现WEBSHELL、远控⽊⻢的创建时间,如何找出同⼀时间范围内创建的⽂件? 可以使⽤find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下⼀天前访问过的⽂件 3、针对可疑⽂件可以使⽤ stat 进⾏创建修改时间
3.4.9 检查系统⽇志 1 2 3 4 5 6 7 8 9 10 ⽇志默认存放位置:/var/log/ 查看⽇志配置情况:more /etc/rsyslog.conf 登录失败记录:/var/log/btmp #lastb 最后⼀次登录:/var/log/lastlog #lastlog 登录成功记录: /var/log/wtmp #last 登录⽇志记录:/var/log/secure ⽬前登录⽤户信息:/var/run/utmp #w、who、users 历史命令记录:history 仅清理当前⽤户: history -c
日志路径
/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授权,甚⾄添加⽤户和修改⽤户密码都会记录在这个⽇志⽂件中
3.4.10 日志分析的技巧 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1、定位有多少IP在爆破主机的root帐号: grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 2.定位有哪些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 3.爆破⽤户名字典是什么? grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr 4、登录成功的IP有哪些: grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 5.登录成功的⽇期、⽤户名、IP: grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
3.5 工具 3.5.1 木马查杀 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1.chkrootkit ⽹址:http://www.chkrootkit.org ------------------------------------------------------------------- 使⽤⽅法: wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #编译完成没有报错的话执⾏检查 ./chkrootkit ------------------------------------------------------------------- 2.rkhunter ⽹址:http://rkhunter.sourceforge.net ------------------------------------------------------------------- 使⽤⽅法: Wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter- 1.4.4.tar.gz tar -zxvf rkhunter-1.4.4.tar.gz cd rkhunter-1.4.4 ./installer.sh --install rkhunter -c
3.5.2 病毒查杀 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 1. Clamav ⽹址:http://www.clamav.net/download.html ------------------------------------------------------------------- 方法1: 1、安装 zlib: wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 #安装⼀下gcc编译环境: yum install gcc CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/ make && make install 2、添加⽤户组 clamav 和组成员 clamav: groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav 3、安装 Clamav tar –zxvf clamav-0.97.6.tar.gz cd clamav-0.97.6 ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make make install 4、配置 Clamav mkdir /opt/clamav/logs mkdir /opt/clamav/updata touch /opt/clamav/logs/freshclam.log touch /opt/clamav/logs/clamd.log cd /opt/clamav/logs chown clamav:clamav clamd.log chown clamav:clamav freshclam.log 5、ClamAV 使⽤: /opt/clamav/bin/freshclam 升级病毒库 ./clamscan –h 查看相应的帮助信息 ./clamscan -r /home 扫描所有⽤户的主⽬录就使⽤ ./clamscan -r --bell -i /bin 扫描bin⽬录并且显示有问题的⽂件的扫描结果 ------------------------------------------------------------------- 方法2: #安装 yum install -y clamav #更新病毒库 freshclam #扫描⽅法 clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log #扫描并杀毒 clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ clamscan -r --remove /usr/local/zabbix/sbin #查看⽇志发现 cat /root/usrclamav.log |grep FOUND
3.5.3 webshell查杀
河马
在线webshell查杀
Web Shell Detector
3.5.4 RPM check 检查 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 系统完整性可以通过rpm⾃带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了: ./rpm -Va > rpm.log 如果⼀切均校验正常将不会产⽣任何输出,如果有不⼀致的地⽅,就会显示出来,输出格式是8位⻓字符串,每个 字符都⽤以表示⽂件与RPM数据库中⼀种属性的⽐较结果 ,如果是. (点) 则表示测试通过。 验证内容中的8个信息的具体内容如下: S ⽂件⼤⼩是否改变 M ⽂件的类型或⽂件的权限(rwx)是否被改变 5 ⽂件MD5校验是否改变(可以看成⽂件内容是否改变) D 设备中,从代码是否改变 L ⽂件路径是否改变 U ⽂件的属主(所有者)是否改变 G ⽂件的属组是否改变 T ⽂件的修改时间是否改变 如果命令被替换了,如果还原回来: ⽂件提取还原案例: rpm -qf /bin/ls 查询 ls 命令属于哪个软件包 mv /bin/ls /tmp 先把 ls 转移到 tmp ⽬录下,造成 ls 命令丢失的假象 rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到当前⽬录的 /bin/ls 下 cp /root/bin/ls /bin/ 把 ls 命令复制到 /bin/ ⽬录 修复⽂件丢失
3.5.5 Linux安全检查脚本 1 2 3 https://github.com/grayddq/GScan https://github.com/ppabc/security_check https://github.com/T0xst/linux
参考文章 应急响应-PDCERF 方法03-CSDN博客