2021年国家“护网行动”预计在4月9日正式开始,攻击方可通过各联网单位发起攻击。为切实做好防守准备,做到“守土有责、守土担责、守土尽责”。因此特总结2020年攻防演练防守、window应急响应、Linux应急响应、webshell排查四个方面。
0x00 2020年攻防演练防守
“未知攻,焉知防”,防守方要先学会从攻击者的角度考虑如何攻破一个系统。
攻击者所用的方式大体上就是下边这张思维导图中的方式:
其中弱口令是侵入系统最简单也是最多的一种方式,切勿因其简单就不给予重视。
——牛顿
使用范围最广的就是各种第三方组件和系统的历史漏洞以及Web安全漏洞,防守方主要防御的也是这两种攻击方式。
例如redis未授权访问、源码或敏感文件泄露、WebLogic和Shiro反序列化等高危历史漏洞。
社工是最难防范的,最近B站上了一部电影《我是谁: 没有绝对安全的系统》电影中CLAY上演了一波教科书般的社会工程学渗透,用邮件钓鱼加近源渗透的方法成功侵入了情报局系统。
电影中有句台词 "很多人都尝试黑进情报局,但你躲在自己的电脑前肯定无法做到" ,说明了近源渗透的必要性;
0day包括未公开的漏洞和攻击方法,0Day漏洞本身就是个永恒的问题,安全产品自身也无法避免0Day攻击,即使我们做好了应对前边几种攻击的所有措施还是会被手握0day的大佬轻松打穿,真的是防不胜防。
当然也不能坐以待毙,发现被打进来后要迅速应急响应把危害和损失控制到最小范围,真正的做到可感、可控。
摸清家底,治理先行
下图是一个传统的防守策略
资产梳理
分析了攻击方常用的攻击手段,接下来就是要梳理己方资产了,通常借助Goby等类似工具进行扫描,梳理出自家有哪些Web资产(网站title、子域名)和IP资产(有几个C段、哪些IP开了什么服务)情况,明确需要重点关注的资产,形成一个资产表。
域名 | 业务系统 | 中间件 | IP | PORT | 备注 |
---|---|---|---|---|---|
xxx.net | 信息管理平台 | Apache-Coyote/1.1 | 666.666.666.111 | 80 | |
abc.xxx.net | 工程管理系统 | nginx/1.18.0 | 666.666.666.123 | 8080 | 子域资产 |
基线加固
对重点系统进行系统基线检查和加固,涉及到Windows和Linux两种主流系统。
设备监控-研判
设备监控和研判也是必不可少的一部分,观察安全设备上的流量信息把攻击特征明显的IP拿出来去微步在线
和IPIP
这样的网站做威胁情报分析,FOFA搜索该IP有没有被记录过资产信息开了哪些服务,大致判断攻击IP是哪种类型的(代理IP?移动wifi?傀儡机?)然后封禁该IP(虽然可以换代理IP,但是封一个少一个)
应急响应
作为一个优秀的小蓝应急响应是基本操作,熟练的取证、清理和业务恢复一气呵成,掌握各种木马的排查和清除方法,审计Web日志和系统日志,找到漏洞并封堵入口点,迅速的做出反应控制危害范围。拔网线是不可能的。
来而不往,非礼也
防守方并不一定是只能被动挨打,当然也可以主动出击。
比如通过部署蜜罐的手段溯源反制,废掉攻击者的工具,提高攻击成本,减少攻击意愿。
部署最后一道预警防线
在内网的必经之路部署一个MySQL、SSH蜜罐,这样万一被打进了内网,攻击者对内网扫描的时候我就能及时的发现,否则被打穿了都没任何察觉岂不是太惨了。
这里用 HFISH: https://github.com/hacklcx/HFish 部署一个低交互的就够了。
但是要注意修改默认配置,防止被攻击方利用默认配置中的key访问日志信息,反日蜜罐
部署高交互蜜罐
部分安全厂商的高交互蜜罐可以绘制攻击者画像,如果没有购买这些蜜罐产品的话用开源的代替也行
T-pot:https://github.com/telekom-security/tpotce
主动出击
从攻击日志中威胁情报分析中疑似傀儡机和攻击者VPS的IP进行反向渗透,看看能不能拿下目标把日志搞下来审计出攻击者登陆IP。
反制案例
MySQL蜜罐获取攻击者微信ID(opens new window)
https://mp.weixin.qq.com/s/m4I_YDn98K_A2yGAhv67Gg
如何通过一封恶意邮件追踪幕后黑客组织(opens new window)
https://mp.weixin.qq.com/s/2_-dXLwkC3slFYV4lBsp2w
蓝队防守恶趣味(opens new window)
https://mp.weixin.qq.com/s/vZzDUZsqfAZR9VRDMLXxJA
本地密码抓取的防御方法
Windows Server 2012 之后的版本默认关闭Wdigest
,无法从内存中获取明文密码。
2012之前的版本安装了KB2871997
,同样无法获取明文密码。
开启和关闭Wdigest
的命令
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
防御mimikatz攻击
mimikatz
在抓取明文密码或散列值时,需要Debug权限。
因为mimikatz
需要和lsass
进程进行交互,没有Debug
权限的话mimikatz
将不能读取lsass
进程。
因此,将拥有Debug权限的本地管理员从Administrators
组中删除即可。
废掉攻击者的工具
0x01 windows应急响应
检查系统账号
#查询当前登录系统的会话
query user
#把用户踢出会话
logoff ID
打开lusrmgr.msc
,查看是否有新增/可疑的账号
用D盾 -> 查看服务器是否存在隐藏账号、克隆账号
查看网络连接
#查看本机所有的tcp,udp端口连接及其对应的pid
#可用findstr过滤,类似Linux的grep命令
netstat -ano
#打印路由表
route print
#查看网络代理配置情况
REG QUERY "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings"
检查进程
#列出所有进程
tasklist
#强制停止某进程
taskkill /T /F /PID
#查看系统开机时间
net statistics workstation
#查看系统计划任务
schtasks /query /fo LIST /v
#查看程序启动信息
wmic startup get command,caption
#查看主机服务信息
wmic service list brief
查浏览器访问记录
直接打开浏览器查看
杀软工具
火绒-火绒剑:https://www.huorong.cn/
卡巴斯基:http://devbuilds.kaspersky-labs.com/kvrt/latest/full/
系统日志审计
运行框输入eventvwr.msc
,打开事件查看器
系统日志
应用程序日志
安全日志
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。
安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
事件日志分析
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义
事件ID | 说明 |
---|---|
4624 | 登录成功 |
4625 | 登录失败 |
4634 | 注销成功 |
4647 | 用户启动的注销 |
4672 | 使用超级用户(如管理员)进行登录 |
4720 | 创建用户 |
每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:
登录类型 | 描述 | 说明 |
---|---|---|
2 | c(Interactive) | 用户在本地进行登录。 |
3 | 网络(Network) | 最常见的情况就是连接到共享文件夹或共享打印机时。 |
4 | 批处理(Batch) | 通常表明某计划任务启动。 |
5 | 服务(Service) | 每种服务都被配置在某个特定的用户账号下运行。 |
7 | 解锁(Unlock) | 屏保解锁。 |
8 | 网络明文(NetworkCleartext) | 登录的密码在网络上是通过明文传输的,如FTP。 |
9 | 新凭证(NewCredentials) | 使用带/Netonly参数的RUNAS命令运行一个程序。 |
10 | 远程交互,(RemoteInteractive) | 通过终端服务、远程桌面或远程协助访问计算机。 |
11 | 缓存交互(CachedInteractive) | 以一个域用户登录而又没有域控制器可 |
0x02 Linux应急响应
账号安全
先查看基础用户信息文件(/etc/passwd,/etc/shadow,/etc/group)
1、查询特权用户特权用户(uid 为0)
awk -F: '$3==0{print $1}' /etc/passwd
2、查询可以远程登录的帐号信息
awk '/$1|$6/{print $1}' /etc/shadow
3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"
4、禁用或删除多余及可疑的帐号
usermod -L user #禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
userdel -r user #将删除user用户,并且将/home目录下的user目录一并删除
查看历史命令
cat ~/bash_history >> history.txt
检查网络连接
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
0
检查异常进程
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
1
检查开机启动项
系统运行级别示意图:
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以想象为windows的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,就是标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
2
3
当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d
目录下,然后在/etc/rc.d/rc*.d
中建立软链接即可
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
3
检查定时任务
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
4
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
5
检查服务
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
6
检查异常文件
检查系统日志
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 | 说明 |
---|---|
/var/log/cron | 记录系统定时任务相关的日志 |
/var/log/message | 记录Linux操作系统常见的系统和服务错误信息(首要检查对象) |
/var/log/btmp | 记录错误登录(登陆失败)日志;使用lastb命令查看 |
/var/log/lastlog | 记录系统中所有用户最后一次成功登录时间,使用lastlog命令查看 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件;用last命令来查看 |
/var/log/utmp | 只记录当前登录用户的信息;使用w,who,users等命令来查询 |
/var/log/secure | 记录验证和授权方面的信息,如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码 |
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
7
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
8
/var/log/syslog:只记录警告信息,常常是系统出问题的信息;
默认Centos,Fedora不生成该日志文件,但可以配置让系统生成该日志文件
/etc/rsyslog.conf
文件中加上:*.warning /var/log/syslog
该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息
正确清空syslog日志的方式
#开启,值为1
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#关闭,值为0
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
9
0x03 webshell排查
工具查杀
使用工具查杀Web目录
#查询当前登录系统的会话
query user
#把用户踢出会话
logoff ID
0
#查询当前登录系统的会话
query user
#把用户踢出会话
logoff ID
1
网站被植入WebShell的应急响应流程
主要关注Web日志,看有哪些异常的HTTP访问
如果有备份源码的情况下可以,用文件对比的方法快速定位Webshell
往期精彩
感兴趣的可以点个关注!!!
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...