来源如下图:(微信公众号:0x00实验室)
0x06 木马免杀篇
免杀可以先fuzz
定位出被查杀的语句,然后对被查杀那部分进行一波操作,像是加密啊、编
码啊、动态执行啊什么的,或者拆分拼接啊,特定条件执行啊,方法很多,主要就是找到那
里被杀了,然后对被杀的部分进行处理
.
00 - 无文件执行木马的方式有哪些?
powershell (脚本解析器) 》》》 powershell.exe (应用程序)VB.script (脚本解析器) 》》》 cscript.exe (应用程序)bat 处理 (脚本解析器) 》》》 cmd.exe (应用程序)javaSrtipt(脚本解析器) 》》》 mshta.exe (应用程序)
01 - shellcode免杀?
- 编码
- 加壳
- 混淆
- 分离免杀
- 特征码修改
- 添加无用逻辑语句
- 重写api
02 - 分离免杀
分为加载器和 shellcode 两部分,一般将 shellcode 存储在网页或者图片中,然后加载器远程加载存在 shellcode 的网页或者图片之类的
03 - powershell远程加载?
可以远程加载mimikazt,远控文件,exe可执行文件实现无文件落地。
0x07应急与响应
01 - Windows加固方法
- Windows加固:修改弱口令,对各个服务密码排查,然后对服务配置文件进行更改禁用php函数实行黑名单白名单
- 对服务版本进行排查查找当前版本是否存在Nday
- iptable设置用户相关服务端口
- 安装杀毒软件
02 - 形容passwd和shadow区别
/etc/passwd 存账户信息一般不存密码/etc/shadow 主要用来存密码/etc/passwd 默认是任意用户可读只有 root 用户可修改 /etc/shadow 默认只有 root 用户可读可写/etc/passwd 包含系统用户和用户的主要信息/etc/shadow 用于储存系统中用户的密码,又称为影子文件/etc/group 记录组 ID 和组名的对应文件
03 - 系统日志分析
常见的应急响应事件分类:
- web入侵:网页挂马、主页篡改、Webshell
- 系统入侵:病毒木马、勒索软件、远控后门
- 网络攻击:DDOS攻击、DNS劫持、ARP欺骗
04 - 网站被挂马如何应急
- 取证,登录服务器,备份,检查服务器敏感目录,查毒(搜索后门文件-注意文件的时间,用户,后缀等属性),调取日志(系统,中间件日志,WAF日志等);
- 处理,恢复备份(快照回滚最近一次),确定入侵方法(漏洞检测并进行修复)
- 溯源,查入侵IP,入侵手法(网路攻击事件)的确定等
- 记录,归档--------预防-事件检测-抑制-根除-恢复-跟踪-记录通用漏洞的应对等其他安全应急事件
05 - Windows中毒了如何应急
一、检查系统账号安全
- 查看服务器是否有弱口令、可疑账号、隐藏账号、克隆账号、远 程管理端口是否对公网开放。
- Win+R 打开运行,输入“eventvwr.msc”打开操作系统日志,查 看管理员登录时间、用户名是否存在异常
二、检查异常端口、进程
- 使用 netstat -ano 检查端口连接情况,是否有远程连接、可疑 连接(主要定位 ESTABLISHED)。
- 根据 netstat 定位出的 pid,再通过 tasklist 命令进行进程定位tasklist | findstr “PID”
- 也可以使用 D 盾_web 查杀工具、火绒剑、XueTr 等工具进行判断可疑进程(如蓝色、 红色进程、没有签名验证信息的进程、没有描述信息的进程、进程的属主、进程的路径是否合法、 CPU 或内存资源占用长时间过高的进程)
三、检查启动项、计划任务、服务
- 检查服务器是否有异常的启动项,如:单击开始菜单 >【运行】,输入 msconfig看一下 启动项是否存在可疑启动,注册表run键值是否存在可疑启用文件,组策略,运行 gpedit.msc 查看脚本启动是否存在启用文件等
- 检查计划任务,如单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径
- 检查服务自启动,如单击【开始】>【运行】,输入 services.msc,注意服务状态和启 动类型,检查是否有异常服务。
四、检查系统相关信息
- 查看系统版本以及补丁信息 检查方法:单击【开始】>【运行】,输入 systeminfo,查看系统信息是否打了补丁
- 查找可疑目录及文件
检查方法:
- a、查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。
Window 2003 C:\Documents and Settings
Window 2008R2 C:\Users\
- b、单击【开始】>【运行】,输入%UserProfile%\Recent,分析最近打开分析可疑文件。
- c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。
五、自动化查杀用360 、卡巴斯基等病毒查杀系统病毒木马, Web 可以用 D 盾、河马工具查杀 Webshell 后门六、日志分析用 360 星图日志分析工具进行分析攻击痕迹或手工结合 EmEditor 进行日志分析
06 - 主机被入侵
1. 优先提取易消失的数据- 内存信息- 系统进程 `free -m`- 路由信息 `tracert`2. ifconfig` 查看网卡流量,检查网卡的发送、接收数据情况3. NetHogs` 实时监控带宽占用状况4. 查看 Linux 系统日志 `/var/log`5. ClamAV` 杀毒软件
07 - 如何发现克隆账号、隐藏账号
去注册表里查看用户、使用安全工具、 d 盾查影子用户net user test$ 123 /add // 添加隐藏用户net localgroup administrators test$ /add // 添加进用户组注册表种删除 regedit 路径: HKEY_LOCAL_MACHINE --SAM–SAM( 需要右击权限修改管理员权限 )-Domains-Account-users 查看 Users 表项与 Names 表项中的项数量是否一致lusrmgr.mscnet user test$ 123/del # 删除
08 - window系统日志分析
window 日志分为系统日志,应用程序日志和安全日志。在应急溯源中,重点关注安全日志日志默认保存位置系统日志: C:\Windows\System32\winevt\Logs\System.evtx应用程序日志: C:\Windows\System32\winevt\Logs\Application.evtx安全日志: C:\Windows\System32\winevt\Logs\Security.evtx
- 不同事件对应不同的ID,可以通过过滤ID快速浏览事件
- 一般是在事件查看其中,对日志时间ID进行筛选。比如在勒索病毒的应急响应中,我们通过事件ID-4624对登录成功的日志进行筛选,因为勒索病毒一般是通过RDP爆破的方式进行传播的,所以我们重点关注登录类型为10的登陆成功的日志
排查流程
- 查看开启的服务以及服务对应的端口 tasklist | findstr “PID” //根据netstat 定位出的pid,再通过tasklist命令确认端口对应的进程
- 使用Process Explorer 查看进程,当然 d盾也可以查看 可以使用火绒剑等工具进行启 动项分析
09 - 怎么发现服务器中的一句话或者大马
d 盾查杀网页目录手动查找:通过查看服务器日志,最近被创建、修改的文件等
- 查找上传、写入日志
- webshell扫描工具
10 - 入侵排查思路
### 已经被入侵一、目的已经达成,木马,后门均已销毁
- 既然知道被入侵,定位被入侵的时间点
- 如果这个服务器是云服务器,对其进行快照。(目的,封存内存。)
- 当定位到时间点,查设备流量信息。找到木马链接信息
- 查找系统内对应的日志,找到相关线索
- 如果日志被删除,因为机器快照已经建立。使用Winhex对硬盘数据进行恢复
二、目的没有达成,数据正在回传。木马,后门均在服务器上运行
- 下线服务器,封禁攻击IP
- Volatility 内存取证 建立快照 提取内存定位到shellcode找到他的IP
- 如果他们使用常见的C2的工具,我们可以根据流量分析出入侵者的意图
- 关闭服务器,或者在防火墙上禁掉他们的IP。登录服务器,对shellcode进行移除
- 重启以后进入安全模式,排查注册表 计划任务 服务 放大镜后门 shift后门
正在被入侵可能入侵者在尝试进行攻击的时候,下线,然后对机器进行排查比如:弱口令爆破
- 弱口令爆破会产生日志,日志一定要采用远程日志系统,例如Linux的rsyslog。开启远程日志系统的好处:不怕日志被攻击者删除
- 一定要找到入侵者的源IP,在防火墙下发阻断策略
11 - windows入侵排查
## windows入侵排查
- 检查系统账号安全
- 历史命令
- 检查异常端口、进程
- 检查启动项、计划任务、服务
- 日志分析:
1. 日志中搜索关键字:如:union,select等
2. 分析状态码 :1xx information200 successful300 redirection4xx client error5xx server error6. 查找可疑文件
12 - Windows被黑客登录了,怎么找到登录ip
查看Windows日志、登录日志、远程桌面日志、审核策略与事件查看器
13 - Linux入侵排查思路
1 、账号安全2 、历史命令3 、检查异常端口4 、检查异常进程5 、检查开机启动项6 、检查定时任务7 、检查服务8 、检查异常文件9 、检查系统日志
14 - 中挖矿病毒怎么分析解决
ps -aux 查看进程分析top 分析算力情况,算力特别多的一般是挖矿病毒对流量进行过滤含有矿池服务器的的流量包就是挖矿病毒以及任务计划可以排查出挖矿病毒,然后 kill 掉进程, rm 掉程序
15 - 中挖矿怎么办?删不掉呢
如果情况允许,先下线,并检查挖矿是否有在内网传播,及时下线所有被传播的主机,上机排查攻击痕迹、一般可以从cup 占用、可疑进程、开放端口、计划任务、服务项等几个方面进行排查,然后将样本上传到在线分析平台,然后清除挖矿主程序,主要就是双向封禁矿池地址、删除计划任务自启动、删服务,结束恶意进程、删病毒
- 删不掉的情况,我们先确认下是因为程序正在使用,还是权限不够,根据情况来进行相应措施
- 直接降权,降到没有执行权限
16 - ssh被爆破的应急解决
首先日志分析:想到的是 `/var/log/secure` ,查看登录相关安全日志: `tail -f /var/log/secure`这个日志文件记录了验证和授权方面的信息,只要涉及账号和密码的程序都会记录下来。统计一下登录成功的 IP 有哪些,看登陆成功的 IP 是否都是正常用户的,如不是,立刻下线,并检查这台服务器是否有对其他内网服务器进行攻击,对服务器进行检测,是否有添加用户或后门等日志分析 -- 》查看用户安全性 -- 》确定攻击情况 -- 》关闭 22 端口
17 - SSH如何加固
- 禁止向公网开放端口,若必须开放应限定管理IP地址并加强口令安全审计(口令长度不低于8位,由数字、大小写字母、特殊字符等至少两种以上组合构成)
- 更改服务器ssh默认端口
- 部署入侵检测设备,增强安全防护
- 同一个ip登录超过5次错误实行黑名单
- 禁用root登录
- 禁用空密码
- 改用密钥登录
- 基于受信任主机的无密码登录
18 - 中了内存马如何排查 (不死马)
源码检测java中,只有被 JVM 加载后的类才能被调用,或者在需要时通过反射通知 JVM 加载。所以特征都在内存中,表现形式为被加载的class ,可以通过一些工具或方法获取到 JVM 的运行时内存中已加载的类, Java 本身提供了 Instrumentation 类来实现运行时注入代码并执行,所以我么可以筛选条件组合进行检测:
- 新增的或修改的;
- 没有对应class文件的
- xml配置中没注册的
- 冰蝎等常见工具使用的
- filterchain中排第一的filter类
还有一些比较弱的特征可以用来辅助检测,比如类名称中包含shell 或者为随机名,使用不常见的classloader 加载的类另外,有一些工具可以辅助检测内存马,如:[ java-memshell-scanner ] ( GitHub - c0ny1/java-memshell-scanner: 通过jsp脚本扫描java web Filter/Servlet型内存马 )是通过jsp 扫描应用中所有 的filter 和 servlet ,然后通过名称、对应的 class 是否存在来判断是否是内存马
如果是 jsp 注入,日志中排查可疑 jsp 的访问请求。如果是代码执行漏洞,排查中间件的 error.log ,查看是否有可疑的报错,判断注入时间和方法根据业务使用的组件排查是否可能存在 java 代码执行漏洞以及是否存在过 webshell ,排查框架漏洞,反序列化漏洞。如果是 servlet 或者 spring 的 controller 类型,根据上报的 webshell 的 url 查找日志(日志可能被关闭,不一定有),根据url 最早访问时间确定被注入时间如果是filter 或者 listener 类型,可能会有较多的 404 但是带有参数的请求,或者大量请求不同url 但带有相同的参数,或者页面并不存在但返回 200
19 - 日志中看到的行为分析
分析方法:
- 蚁剑、菜刀
post一个PHP 的函数 这些函数可以对文件进行操作 可以对数据库进行操作如果特征编码 例如 base64 rot13 通过该种编码的解码来实现流量的解密
- 冰蝎
aes-128加密在开始连接进行密钥协商的时候 抓取冰蝎流量密钥值通过冰蝎密钥 对加密的流量进行解密在进行行为分析
20 - 应急响应的六个过程?
准备 - 检测 - 抑制 - 根除 - 恢复 - 跟踪总结
21 - 被上传一句话、日志被清除、 已经免杀
一般都有备份文件,可以提取一下备份文件的 md5 值,再把现在的 md5 值提取出来对比一下,因为文件发生改变 md5 就会改变 通过软件
22 - Linux系统中毒 如何应急?
- 检查用户及密码文件/etc/passwd、/etc/shadow 是否存在多余帐号,主要看一下帐 号后面是否是 nologin,如果没有 nologin 就要注意;
- 通过 who 命令查看当前登录用户(tty 本地登陆 pts 远程登录)、w 命令查看系统信息,想知道某一时刻用户的行为、uptime查看登陆多久、多少用户,负载;
- 修改/etc/profile的文件,在尾部添加相应显示时间、日期、ip、命令脚本代码,这样 输入history命令就会详细显示攻击者 ip、时间历史命令等;
- 用 netstat -antlp|more命令分析可疑端口、IP、PID,查看下 pid 所对应的进程文件路径,运行ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号);
- 使用ps命令,分析进程 ps aux | grep pid
- 使用 vi /etc/inittab 查看系统当前运行级别,通过运行级别找到/etc/rc.d/rc[0~6].d对应目录是否存在可疑文件;
- 看一下crontab定时任务是否存在可疑启用脚本;
- 使用chkconfig --list 查看是否存在可疑服务;
- 通过grep awk命令分析/var/log/secure安全日志里面是否存在攻击痕迹;
- chkrootkit、rkhunter、Clamav 病毒后门查杀工具对 Linux 系统文件查杀;
- 如果有 Web 站点,可通过 D 盾、河马查杀工具进行查杀或者手工对代码按脚本木马关 键字、关键涵数(evel、system、shell_exec、exec、passthru system、popen) 进行查杀Webshell 后门。
0x08 安全防御篇
00 - 企业内部安全
信息安全管理的本质就是输入和输出。一般防范的风险为物理威胁和网络威胁。防范风险可以从制度和流程(人员入离职流程、权限申请流程)、人员配备和知识积累、风险防范(物理威胁:门禁、监控、禁止USB 设备接入、封闭 PC 、定时巡检;网络威胁:部署行为管控设备、可靠的网络结构、IP 和 MAC 地址绑定,将网络行为分组、限制不必要的软件和通信协议、定期审核日志)
01 - 说下ISO27000
ISO27000 是国际知名的信息安全管理体系标准,适用于整个企业,不仅仅是 IT 部门,还包括业务部门、财务、人事等部门。引入信息安全管理体系就可以协调各个方面信息管理,从而使管理更为有效。保证信息安全不是仅有一个防火墙,或找一个24 小时提供信息安全服务的公司就可以达到的。它需要全面的综合管理。
02 - 等级保护制度
《信息安全等级保护管理办法》是为规范信息安全等级保护管理,提高信息安全保障能力和水平,维护国家安全、社会稳定和公共利益,保障和促进信息化建设,根据《中华人民共和国计算机信息系统安全保护条例》等有关法律法规而制定的办法。
03 - 日志分析ELK的使用和分析
- - Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索 引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- - Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
- - Kibana也是开源和免费的工具,它Kibana可为Logstash和ElasticSearch提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
参考: https://www.zhihu.com/question/21427267
04 - 常见的安全设备
- - 防火墙 utm 负载均衡设备
- - IPS IDS(HIDS基于主机型入侵检测系统)
- - 堡垒机
- - 蜜罐
- - 网闸
- - waf
- - 扫描器
- - soc(ossim开源安全信息管理系统)
0x09 其他问题篇
00 - WEB常用的加密算法?
非对称加密: RSA 、 ElGamal 、 Rabin对称加密: DES 、 3DES 、 AES散列算法: MD5 SHA base64
01 - 网络七层协议?
从上到下:应用层(报文):包含用户应用程序和协议;表示层(报文):主要解决用户信息的语法表示问题,如会话加密与数据压缩、语法表示与连接管理;会话层(报文):会话链接的恢复与释放、对会话进行分段,同步等传输层(段):提供端到端之间可靠透明的传输。分段与重组、差错控制及流量控制,保证数据传输的完整性和正确性;网络层(分组):路径的选择,网络连接的多路复用、差错的检测与恢复、排序与流量控制、 服务选择;数据链路层(帧):把不可靠信道变为可靠信道,将比特组织成帧,在链路上提供点到点的帧传输,差错检测、流量控制等物理层(比特流):提供物理通路,二进制数据比特流传输、定义机械、电气特性和接口等。各层使用的设备:网关:应用层、传输层(网关在传输层上以实现网络互连,是最复杂的网络互联设备,仅用于两个高层协议不同的网络互连。网关的结构和路由器相似,不同的是互连层,网关既可以用于广域网互连,也可以用于局域网互连)路由器:网络层 (路由选择、存储转发)交换机:数据链路层、网络层(识别数据中的 MAC 地址信息,根据 MAC 地址进行转发,并将这些MAC 地址与对应的端口记录在自己内部的一个地址表中)网桥: 数据链路层(将两个 LAN 连起来,根据 MAC 地址来转发帧)集线器:物理层(纯硬件设备,主要用来连接计算机等网络终端)中继器:物理层(在比特级别对网络信号进行再生和重定向时,从而使得它们能够在网络上传输更长的距离)网桥:数据链路层(将两个 LAN 连起来,根据 MAC 地址来转发帧)集线器:物理层(纯硬件设备,主要用来连接计算机等网络终端)中继器:物理层(在比特级别对网络信号进行再生和重定向时,从而使得它们能够在网络上传输更长的距离)
02 - https的建立过程
https 的建立过程
- a、客户端发送请求到服务器端
- b.服务器端返回证书和公开密钥,公开密钥作为证书的一部分而存在
- c.客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公开密钥加密发送到服务器端
- d.服务器端使用私有密钥解密数据,并使用收到的共享密钥加密数据,发送到客户端
- e.客户端使用共享密钥解密数据
- f.SSL加密建立
03 - HTTP Keep-Alive的作用
作用: Keep-Alive :使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接。 Web 服务器,基本上都支持 HTTP Keep - Alive。缺点:对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,虽然为客户保留打开的连 接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web 服务器和应用服务器在同一台机器上运行时, Keep - Alive功能对资源利用的影响尤其突出。解决:Keep-Alive: timeout=5, max=100timeout :过期时间 5 秒(对应 httpd.conf 里的参数是: KeepAliveTimeout ), max 是最多一百次请求,强制断掉连接。就是在timeout 时间内又有新的连接过来,同时 max 会自动减1 ,直到为 0 ,强制断掉
04 - Https的工作原理
工作大致过程1. 客户端发起HTTPS请求浏览器里面输入一个HTTPS网址,然后连接到服务端的443端口上。注意这个过程中客户端会发送一个密文族给服务端,密文族是浏览器所支持的加密算法的清单。
2. 服务端配置:
采用HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥,可以这么理解,公钥就是一把锁头,私钥就是这把锁的钥匙,锁头可以给别人对某个东西进行加锁,但是加锁完毕之后,只有持有这把锁的钥匙才可以解锁看到加锁的内容。前面说过客户端会传送密文族给服务端,服务端则会从这些密文族中,挑选出一个3. 传送证书这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构、过期时间等等。4. 客户端解析证书这部分工作是由客户端的TLS 来完成的,首先会验证公钥是否有效,如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密。注意一下上面提到的" 发现异常 " 。证书中会包含数字签名,该数字签名是加密过的,是用颁发机构的私钥对本证书的公钥、名称及其他信息做hash 散列加密而生成的。客户端浏览器会首先找到该证书的根证书颁发机构,如果有,则用该根证书的公钥解密服务器下发的证书,如果不能正常解密,则就是" 发现异常 " ,说明该证书是伪造的。5. 传送加密信息这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,然后客户端和服务端的通信就可以通过这个随机值来进行加密和解密了。6. 服务端解密信息服务端用私钥解密后,得到了客户端传过来的随机值,至此一个非对称加密的过程结束,看到TLS利用非对称加密实现了身份认证和密钥协商。然后把内容通过该值进行对称加密。7. 传输加密后的信息这部分是服务端用随机值加密后的信息,可以在客户端被还原。8. 客户端解密信息客户端用之前生成的随机值解密服务端传送过来的信息,于是获取了解密后的内容,至此一个对称加密的过程结束,看到对称加密是用于对服务器待传送给客户端的数据进行加密用的。整个过程即使第三方监听了数据,也束手无策。
05 - 最近新出的漏洞
log4j 漏洞:(建议自己复现一次)成因:Apache Log4j 是一个基于 Java 的日志记录工具 漏洞是因为 Log4j2 组件中lookup 功能的实现类 JndiLookup 的设计缺陷导致,这个类存在于 log4j-corexxx.jar 中受影响的版本:2.0-beta9 <= Apache Log4j <= 2.15.0-rc1修复:设置jvm 参数: -Dlog4j2.formatMsgNoLookups=true设置系统环境变量: FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS=true升级版本:官方,最新的版本仅支持 java, ldap, 和 ldaps ,同时默认禁用 JNDI 等等功能去限制利用构造 payload 去触发漏洞。Java 8 及之后的版本升级到 v2.16.0 。Java 7 升级到 v2.12.2 。其他版本,删除 JndiLookup 类: zip -q -d log4j-core-*.jarorg/apache/logging/log4j/core/lookup/JndiLookup.class
钉钉 \ 向日葵 RCE 漏洞。 最新 apache 漏洞等部分原因:请自行查找相关技术文章学习,此处不做说明