hvv(三)补充
winserver2012 之后如何hashdump
配置注册表并重新登录后才能抓取明文。
撞哈希
vcenter了解吗
查看
/sdk/vimServiceVersions.xml
可以查看vcenter版本文件上传漏洞
漏洞检测工具
重置密码获取web控制台权限
获取虚拟机权限
生成快照
ssh连接
redis常见漏洞
未授权访问
写计划任务(一般只能用于centos)
写SSH私钥
写webshell(需要写权限,知道绝对路径)
主从复制RCE
CSRF
- 就是钓鱼网站,点击携带已经认证的身份去访问另一个网站
MYSQL,SQL SERVER,phpmyadmin提权及其原理
MySQL
UDF:自定义函数,加载udf的动态链接库
MOF:上传mof文件,mof文件会被自动执行,winserver 2003
启动项提权:写启动项
竞争条件提权 SQL Server:
xp_cmdshell:
拥有dba权限
依赖xplog70.dll
sp_oacreate:
拥有dba权限
依赖odsole70.dll
使用wscript.shell 组件执行命令
xp_regwrite:
模拟登录提权
CLR提权
导入CLR插件
编写CLR函数
执行
PhpMyadmin:
绝对路径写webshell
日志文件写webshell
https://tttang.com/archive/1545/#toc_0x05-xp_cmdshell
Weblogic的攻击面?具体到组件,协议?
T3反序列化->T3协议
XML反序列化 ->/wls-wsat/CoordinatorPortType
SSRF->uddiexplorer
后台文件上传
- 前提:开启了测试页面,知道web路径
时间注入怎么加快获取数据?
二分法
二进制延迟注入
DNSLog快速查询
需要load_file
需要secure_file_priv
前期资产怎么梳理?
设备
ip
域名
测试主机、业务主机
出网主机、不出网主机
VPN
弱密码
SSH如何加固?
换端口
用私钥文件登录
修改iptables规则,限制连接次数
禁止空账户登录
禁止root登录
做黑白名单
登录网站后台后,功能很多,从哪些方面考虑getshell?
编辑文件
文件上传
新建任务
插件上传
ssrf无回显如何深度利用
dict协议:探测是否存在ssrf
sftp:上传下载文件
gopher:发起http请求,向外发送
nacos漏洞
默认key权限登录绕过,可以创建账户
权限绕过
不出网的利用方式
能写webshell -> regeorg +proxifier 做隧道
将执行内容写到web目录
将回显内容写到响应包中
无回显的利用
反弹shell
dnslog外带
http请求外带
页面返回时间判断
jndi注入原理
jndi的全称是java命名和目录接口,可以理解为PHP伪协议类似,通过这个接口可以访问一些特定的服务,如RMI、LDAP、DNS等服务。
rmi和jndi区别
RMI是远程方法调用,JNDI是Java命令和目录服务
可以通过JNDI接口去访问RMI服务
RMI用于不同JVM之间的通信,并调用远程对象的方法
JNDI用于查找和绑定对象、管理目录结构以及获取配置信息等
sqlmap的一些参数
--level
2 cookie
3 会测试ua和refer
5 会测试host
--risk
1 测试大部分语句
2 基于事件增加测试语句
3 会增加or语句
4 update语句测试
--os-shell
os-shell的使用条件,原理是上传一个webshell来进行命令执行
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭
--tamper
指定tampper脚本,可以改造sql注入的注入语句
fastjson 不出网怎么利用
- 打bcel直接执行命令
shrio550与shiro721
shiro550:
特征:登录后会出现 rememberme = deleteme
流量:先AES再BASE64
利用:默认秘钥或爆破秘钥
shiro721:
特征:同550
流量:同550
利用:利用有限的cookie去进行padding oracle attack
shiro有key无链怎么办
使用shiro_tool这个工具可以检测一些不常用的链
常见的打JRMPClient
配合weblogic的组件co
java内存马的类型
传统应用型:
servlet:动态注册Servlet及其映射路由
filter:动态注册Filter及其映射路由
listener:动态注册listener 框架型:
SpringController:动态注册Controller及其映射路由
SpringInterceptor:动态注册Interceptor及其映射路由
SpringWebflux:动态注册WebFilter及其映射路由 中间件型:
Tomcat Valve:动态注册Valve
Upgrade:动态注册UpgradeProtocol
Executor:动态替换全局Executor
Poller等:动态替换全局Poller 其他类型:
WebSocket:动态注册WebSocket路由及处理逻辑
Tomcat JSP:动态注册TomcatJSP管理逻辑并实现
线程型:动态添加一个无法杀死的线程
RMI型:动态启动一个RMI Registry Agent型:
Agent型内存马:通过Hook并修改关键方法添加恶意逻辑
SpringBoot的常见漏洞,具体到路径和包
信息泄露类:
接口文档泄露,doc.html,swagge-ui.html等
actuators包
/env:获取全部环境属性
/mappings:描述全部的URI路径以及控制器的映射关系
/beans:描述上下文里全部的Bean,以及他们的关系
/autoconfig:记录了哪些自动配置条件通过,哪些没通过
RCE类
SpringCloud GateWay
先访问
/actuator/gateway/routes/test
创建恶意路由,并在恶意路由中执行SpEL表达式再访问
/actuator/gateway/refresh
刷新路由访问
/test
,即可看见响应中有执行的命令
SrpingCloud SnakeYAML
原理:SnakeYAML解析YAML文件时,存在反序列化漏洞
过程:
vps上设置恶意的yml文件
访问受害者
/env
,post修改环境变量spring.cloud.bootstrap
为vps恶意yml地址访问
/refresh
刷新路由
mysql jdbc 反序列化
原理:
过程:
1、在vps上起一个恶意的payload
2、修改
/env
下的Spring.datasource.url
到vps的ip
Java的危险函数有哪些
//命令执行类
Runtime.exe()
ScriptEngine.eval()
SpelExpressionParse()
ClassLoader.defineClass()
ProcessBuilder()
//sql注入类
一般去mapper.xml里面看
//文件上传类
FileInputStream()
createNewFile()
MultipartFile()
//SSRF
HttpClient()
Sokcet()
URL()
HttpURLConnection()
//XXE类
DocumentBuilder()
XMLStreamReader()
XMLReader()
//反序列化
readObject()
readUnshared()
Yaml.load()
JSON.parseObject()
//JNDI
lookup()
C2服务器如何防溯源
CDN隐藏:给VPS申请一个CDN加速
域前置:在不同通信层使用不同的域名
重定向:在CS服务器和受害机之间设置一个转发器,即代理或者端口转发工具
云函数:简单来说就是云厂商提供了一个供代码运行的容器方便开发者便捷部署并运行应用程序,部署在云上自带CDN特效,而攻击者则利用其编写了代码对攻击流量进行了转发,完成攻击前置的目的。
https://www.cnblogs.com/jicey/articles/16201785.html
Windows提权
内网渗透
内网横向常用的手段
哈希传递
票据传递
密码喷洒
IPC$+计划任务
rdp劫持
winrm、wmi、smb、psexec、DCOM https://xz.aliyun.com/t/9744?time__1311=n4%2BxuDgD9AD%3DDt3w405DK3xCqxWTqiKwo4p5ix&alichlgref=https%3A%2F%2Fwww.google.com%2F#toc-28
keberos认证流程
黄金票据、白银票据、钻石票据、蓝宝石票据
黄金票据:伪造域管理员权限的TGT,但是需要以下条件
krbtgt账户的hash
域的SID
要伪造的账户
域的名称
白银票据:伪造ST,但是需要以下条件
目标服务账户的hash
域的SID
要伪造的账户
域的名称
钻石票据:创建真实的TGT,由KDC下发,但是修改了PAC。需要以下条件
krbtgt AES256 秘钥
低权限账户
域名称
要伪造的账户
蓝宝石票据:创建真实的TGT,由KDC下发,并且组装了真正的PAC。需要以下条件:
krbtgt账户的AES256 秘钥
域的SID
要伪造的账户
域的名称
内网隧道
frp隧道 -> 反向代理
neo+proxifier -> 正向代理
烂土豆提权的具体原理
核心是通过NTLM中继
来接管system账户。
哈希传递攻击
哈希传递攻击的前提:
- 域内某个域账户的ntlm值
mimikatz中debug:privilege的原理
privilege:debug
通过调试模式提权,账户必须能够使用管理员权限
委派攻击
委派指的是将域内用户的权限委派给服务账户,使得服务账户能以用户权限访问域内的其他服务。
非约束性委派
约束性委派
基于资源的约束性委派
DSync
DCSync是域内的数据同步,域中默认每15min会进行一次数据同步。
前提:
管理员组的用户
域管用户
普通用户有DCSync权限
研判
设备常见告警有哪些?
一般来说都是大量的扫描告警,比如某某漏洞的告警。
告警量多少条?
加白名单是怎么加?根据规则还是加进程?
误报很多的情况下,如何快速定位真实的攻击流量
首先根据紧急程度,如命令执行、文件上传、反序列化这类或者按照设备上的危害程度排序,先挑选重要的攻击进行研判。
其次若发现大量流量来自于同一ip,抽检来自该ip的流量,根据请求包的payload来判断是否为攻击行为
批量进行威胁情报查询,若存在攻击画像直接判定为攻击流量
做过降噪吗
钓鱼邮件如何处置
从钓鱼邮件取出内容,然后上传微步云沙箱进行分析。 如果有其他行为,可以直接把外联的地址的封掉。
手动分析: 使用IDApro,直接shift+F12。看程序中的字符串段,看有没有什么可以的字符串,或者加密字符串。
ips和ids的区别
入侵防御系统和入侵检测系统
态势上有一个内对内的攻击如何进行研判
首先跟甲方沟通,梳理一下A主机的性质,是业务服务器还是个人PC,还是最近上线的测试系统
根据主机的性质进行分析,如果是新上线的测试系统可能会产生误报,如果是个人PC可以进行直接的沟通或者上机排查。
如果是正常运行的业务服务器,那么可以考虑是不是被当做了跳板,重点分析A的行为以及连接情况,并进行应急响应。
随后进行研判内对内的行为是什么,如果判定为真实的攻击行为,可以对A主机进行隔离,然后做应急响应。
反序列化的流量特征
shiro:cookie中出现rememberme = deleteme,或者有大量的AES加密的内容 fastjson:@type
后跟了一些常见的恶意类 如JDBC、TemplateImpl CC链:找一些source点如 AnnotationInvocationHandler和sink点如classloader之类的
webshell的流量特征
冰蝎
请求头accept:
text/html,image/gif,image/jpeg,*,q=.2,*/*,q=.2
请求体:很明显的AES加密内容
UA: 内置了17种UA头,当同一ip的UA在频繁变换时可以考虑是冰蝎
默认秘钥是
rebeyond
的md5前16位
冰蝎4.0: 有解密过吗?还有什么特征
请求头accept:
application/json,text/javascript,*/*;q=0.01
content-type:
octet-stream,x-www-form-urlencoded
UA:内置了10种
长连接
默认秘钥是:e45e329feb5d925b
哥斯拉
Cookie中有一个非常关键的特征,最后会有个分号
Accept:
Accept:text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
响应体:md5的前16位 + base64 + md5的后16位
蚁剑
请求体:
@init_set("display_errors","0");@set_time_limit(0)
,后面跟的是base64响应内容:随机数 + 结果 + 随机数
sql注入如何判断攻击成功,
首先是查看响应为200的数据包,根据请求包的注入类型进行相应的判断
如果是报错注入,则查看回显中是否有相关报错内容
如果是时间盲注,则查看数据包的时间戳是否对得上
如果有一台被感染内网主机B在横向,如何排查源头或者是否有其他受害主机?后续的处置有哪些?
先将B隔离起来
然后观察B的连接情况,以及进程端口情况,看有没有什么比较特殊的端口
观察全流量分析,查看内网中到B的流量有没有异常流量,尝试找到A的地址
再查看A的端口或者连接情况,尝试查看是否有其他横向的受害主机,对A进行检查,是否存在隧道代理等文件
如何判断钓鱼是否有其他受害者?或者二次投毒行为?
首先排查谁被钓鱼了,然后可以跟他本人沟通。
微步有部署过一个钓鱼监控系统,可以检测到哪些人点击了钓鱼邮件。
log4j如何判断攻击成功
首选寻找响应200且有log4j攻击特征的流量
${jndi:ldap 执行的命令}
查看攻击主机到受害主机的流量,以及jndi后面rmi或ldap的恶意ip的流量
假设攻击主机位A,受害主机为B,jndi注入的恶意ip为C,如果发现了A->B的流量,且发现了B->C的流量,那么就可以判断攻击成功
攻击变种如何判定?也就是绕过方式
${::-}$
${upper}$
${hostName}$
嵌套标签
unicode编码
不出网怎么办?
- 使用嵌套标签,产生报错,有回显
shiro如何判定是恶意的流量
shiro550的话用常见的秘钥可以进行解密
根据cookie长度,一般来说cookie长度长的不正常的就大概率是攻击
根据后续情况,一般使用工具连接的话,后续会有其他动作,比如执行命令或者上传之类的。响应包中会有
$$$<加密回显>$$$
jndi注入如何判断攻击成功
首先寻找具有
${jndi:ldap 执行的命令}
跟log4j2一个道理
如何判断外联行为是恶意行为
在微步上查看恶意外联ip的攻击画像
查看外联的目标的端口是不是常见端口
查看后续的流量交互是否满足一些恶意行为特征
MSF、CS的流量特征
MSF
默认端口:4444
数据内容:msf数据包通常包含特定字符串:(
meterpreter、reversehll
)等、msf直接生成的
reverse_shell
中,命令会直接明文记录在流量包中而
metepreter
或http的shell,会有有MZ
和DOS模式异常
记录在流量包中请求头很短,只有UA、HOST等等,且连续的数据包中请求头和响应头都不会变
https的话看JA3值
CS
默认端口:50050
心跳包特征:间隔一定时间,均有通信,且数据长度固定
指令特征:
第一次连接时,靶机信息会加密放在cookie中
下发指令时,通过心跳包接收指令,指令会加密存放在心跳包的body中
指令执行结束后,client端通过POST请求发送执行的结果数据,body部分通过加密和base编码
不同指令,执行的时间间隔不一样,可以通过POST请求和GET请求的间隔进行判断
数据特征:在请求的返回包中,通信数据均隐藏在jquery*.js中
Http-beacon
第一次访问会有
/xxxx
checksum8的看起来像四位随机数响应时会将靶机信息放在cookie当中
后续通过心跳包接收指令,响应体加密传输
Https-beacon
- 强特征是JA3值固定
dns-beacon
激活后默认使用
A 0.0.0.243
这个TXT记录随后将靶机信息以
www.<加密后的靶机信息>
传回c2接收c2任务时,先以
api开头的A记录
告知服务器可以下发任务执行完任务之后,以
post
开头的A记录查询回传结果
强特征:
checksum8路径
JA3和JA3s与操作系统有关
长度超过200的DNS解析请求
参考文章: https://www.ddosi.org/cobaltstrike/ https://forum.butian.net/share/1861
应急响应
Windows应急思路
文件->账户->计划任务->启动项->历史命令->进程状态->日志文件 问到具体的,蓝队工具箱。
Linux应急思路
账户->文件->计划任务->启动项->环境变量->./bashrc->进程
账户:
cat /etc.passwd
文件:
find ./ -ctime -1
计划任务:
cat /etc/crontab
启动项:
cat etc/init.d
环境变量:
ls -shila /usr/bin;echo $PATH
./bashrc:
cat ~/.bashrc
进程:
pstree
windows影子账户如何排查
查看控制面板
查看注册表
D盾查杀,克隆账号检测功能,可以检测出隐藏、克隆账号
进程注入排查思路
PCHunter:查看进程及其子进程及其连接情况,可以看到子进程的连接状况
TCP view:查看连接情况,可以看到子进程的连接状况
dll注入的排查思路
查看注册表中的dll调用,是否存在恶意的或者不知名的dll加载
使用ProcessExplorer列出所有进程的DLL以树状结构显示。【分栏】-【View DLL】看文件描述看签名。从【View】-【Select Columns】可以显示DLL的属性和验证数字签名。
替换进程如svchost.exe如何排查
svchost.exe是仅用来启动加载注册表中的dll
先查看其启动路径,是不是
C:\Windwos\System32
使用PCHunter,校验进程所有模块的数字签名
各类排查: https://www.cnblogs.com/17bdw/p/10227059.html
ssh登录日志的命令
cat /var/log/auth.log
cat /var/log/secure
内存马排查思路
常见的一般是php内存马和java内容马 php内存马:
php-fpm的特征比较明显,用webshell查杀工具就能查到
其他的在进程当中,可以通过查看php的子进程是否有跳动,杀掉对应子进程即可
java内存马:
通过arthas工具,可以分析jvm的状态
常用命令:
sc *.servlet
:查找jad
:反编译dump
:class拖下来
通过memshell scanner进行查杀
servlet-api型:找到后去删除对应的包下删除
agent型:修改还原这个被篡改的类的字节码,再注入到目标中间件中,是一个漏洞反利用的过程
在waf上对不存在的路径进行拦截
查看是否访问不存在的路径等
如果工具attach不上java进程,有两个思路:
重启jar包,干掉内存马
coredump下内存
挖矿病毒或者xx程序如何排查
分析启动进程参数: wmic process get caption,commandline /value >> tmp.txt
获取具体进程的参数: wmic process get caption="svchost.exe",get caption,commandline /value >> tmp.txt
攻击者上传了文件,能定位到进程和pid,但是上机发现不存在,应该如何恢复该文件
在系统中如果文件是存在于内存当中,linux系统会维护一个打开文件表,在/proc/<pid>/fd
下。 通过lsof
可以列出当前系统中的打开文件表,如果可以定位到pid
,那么可以直接使用 lsof | grep /proc/<pid>/fd
来查看目标进程的打开文件表,然后根据打开文件表找对应的文件即可。
必背命令
windows
查看端口情况
netstat -ano
查看进程树
tasklist /V /FO list
查看近期新增或改动的文件
windows日志路径
安全日志文件:%systemroot%\system32\config\SecEvent.EVT
系统日志文件:%systemroot%\system32\config\SysEvent.EVT
应用程序日志文件:%systemroot%\ system32\config\AppEvent.EVT
linux
查看计划任务
crontab -l
cat /etc/crontab
查看登录日志
cat /var/log/auth
cat /var/log/secure
查看进程
查看所有进程
ps aux
查看进程树
pstree |grep <父进程名称>
查看内存占用
top
查看近1天修改或新增的文件
find
find
查看当前系统用户的会话
w
查看hosts文件
cat /etc/hosts
查看最近登录情况
last
查看登录失败的日志
lastb
查看环境变量和启动项
env
cat /etc/profile
cat /etc/environment
隐藏bashhistory记录的命令
set +o history
查看常见命令指向
Offer情况
中介:
深蓝 : 初+ 1000/8h 1300/12h
鼎夏: 中研 1700-2500 税10%
鸿鹄:中 1800 税后 不分8和12
厂商: 斗象:中 1600 包差旅 10~11小时1.1 12小时1.2
青藤云
sqlmap os-shell的原理
做过内网渗透吗
在内网横向的方法
隐藏操作历史的方法
攻击者上传了文件,能定位到进程和pid,但是上机的时候发现不存在该文件,应该如何恢复该文件
linux下查看哪些人登录了服务器,应该如何查看?用什么命令?失败的呢?
有做过应急吗?讲一下
用过哪些产品?
天眼告警Webshell,如何研判
用过主机侧的产品?HIDS?
看万相告警? 为什么告警?告警可疑的地方?什么攻击能造成这样的进程链?是否为真实攻击