一、应急响应

1.1 什么是应急响应

应急响应,指的是在应对突发事件或危机情况时采取的及时有效措施,以控制和减轻事件带来的影响,保障安全。
在检测到网络安全事件(如黑客攻击、数据泄露、系统入侵等)后,组织采取的一系列预定义的行动和程序,以最小化损失和影响,恢复正常运营,并防止未来的安全威胁。

1.2 PDCERF模型

  • 准备阶段
    准备阶段以预防为主。主要工作涉及识别机构、企业的风险,建立安全政策,建立协作体系和应急制度。按照安全政策配置安全设备和软件,为应急响应与恢复准备主机。依照网络安全措施,进行一些准备工作,例如,扫描、风险分析、打补丁等。如有条件且得到许可,可建立监控设施,建立数据汇总分析体系,制定能够实现应急响应目标的策略和规程,建立信息沟通渠道,建立能够集合起来处理突发事件的体系。

一般现象

  1. 业务服务功能失效
  2. 业务内容被明显篡改
  3. 系统文件丢失
  4. 系统崩溃、卡顿、资源不足

  • 检测阶段
    检测阶段主要检测事件是已经发生的还是正在进行中的,以及事件产生的原因。确定事件性质和影响的严重程度,以及预计采用什么样的专用资源来修复。选择检测工具,分析异常现象,提高系统或网络行为的监控级别,估计安全事件的范围。通过汇总,查看是否发生了全网的大规模事件,从而确定应急等级及其对应的应急方案。

  • 遏制阶段
    抑制阶段的主要任务是限制攻击/破坏波及的范围,同时也是在降低潜在的损失。所有的抑制活动都是建立在能正确检测事件的基础上的,抑制活动必须结合检测阶段发现的安全事件的现象、性质、范围等属性,制定并实施正确的抑制策略。

抑制策略

  1. 从网络上断开主机或断开部分网络
  2. 封禁攻击来源IP
  3. 修改所有的防火墙和路由器的过滤规则
  4. 封锁或删除被攻击的登录账号
  5. 关闭受攻击的系统或其他相关系统的部分服务
  6. 完全关闭所有系统

  • 根除阶段
    根除阶段的主要任务是通过事件分析找出根源并彻底根除,以避免攻击者再次使用相同的手段攻击系统,引发安全事件。并加强宣传,公布危害性和解决办法,呼吁用户解决终端问题。加强监测工作,发现和清理行业与重点部门问题。
  • 恢复阶段
    恢复阶段的主要任务是把被破坏的信息彻底还原到正常运作状态。确定使系统恢复正常的需求内容和时间表,从可信的备份介质中恢复用户数据,打开系统和应用服务,恢复系统网络连接,验证恢复系统,观察其他的扫描,探测可能表示入侵者再次侵袭的信号。一般来说,要想成功地恢复被破坏的系统,需要干净的备份系统,编制并维护系统恢复的操作手册,而且在系统重装后需要对系统进行全面的安全加固。
  • 总结阶段
    总结阶段的主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生。基于入侵的严重性和影响,确定是否进行新的风险分析,给系统和网络资产制作一个新的目录清单。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。

工作内容

  1. 形成事件处理的最终报告
  2. 总结响应过程
  3. 评估应急响应人员相互沟通在事件处理上存在的缺陷

二、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 账号安全

检查系统账号安全

  1. 弱口令、端口开发情况
  2. 查看系统用户账号(lusrmgr.msc)
  3. D盾查杀注册表(是否有克隆账号)
  4. 日志审查(eventvwr.msc->事件查看器->windows日志->安全导出->使用Log Parser进行分析)

2.3.2 端口进程

检查异常端口、进程

  1. 用 netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED
  2. 进行进程定位 tasklist | findstr “PID”
  3. msinfo32->软件环境->正在运行的任务->再使用Process Explorer进行排查

2.3.3 启动项、计划任务、服务

检查启动项、计划任务、服务自启动

  1. 排查启动项
  2. 排查注册表启动项(注册表路径如下)
    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
  3. 检查计划任务(cmd->schtasks.exe)
  4. services.msc 查看是否有可疑自启动服务

2.3.4 Web 访问⽇志

  1. 找到中间件的web⽇志,打包到本地⽅便进⾏分析。
  2. 推荐⼯具:Windows 下,推荐⽤ EmEditor 进⾏⽇志分析,⽀持⼤⽂本,搜索效率还不错。Linux 下,使⽤ Shell 命令组合查询分析。
  3. 工具推荐
    部署linux上web访问
    fulleventlogview工具分析

2.4 工具

2.4.1 木马病毒

  1. PCHunter
  2. ⽕绒剑
  3. Process Explorer
  4. processhacker
  5. autoruns
  6. OTL
  7. SysInspector

2.4.2 木马查杀

  1. 卡巴斯基
  2. ⼤蜘蛛
  3. ⽕绒安全软件
  4. 360杀毒

2.4.3 威胁情报

  1. CVERC-国家计算机病毒应急处理中⼼
  2. 微步在线威胁情报社区
  3. ⽕绒安全论坛
  4. 爱毒霸社区
  5. 腾讯电脑管家

2.4.4 在线查杀

  1. Virustotal
  2. Virscan
  3. 腾讯哈勃分析系统
  4. 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 系统日志

  • ubuntu
    1
    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
  • centos
    1
    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查杀

  1. D盾
  2. 河马
  3. 牧云
  4. 牧云下载地址
  5. 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/false
    echo "-------------------------查看登录信息-------------------------"
    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 勒索

  • 分析平台
  1. 深信服
  2. 360
  3. 奇安信
  4. 腾讯
  5. 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查杀

  1. 河马
  2. 在线webshell查杀
  3. 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博客