前言:
安全是个整体,任何一个短板都会造成安全事故,从边界网络到IDC 运维网络再到办公网络,都是个整体每一处网络都不能忽视。
企业在为安全做了多层防护不是一个IDS,WAF,杀毒软件安全防护能搞定事,为何内网不堪一击,真有攻击发生时,这些防护策略能否觉察到攻击。
案例:注入到shell再到内网域控
整个事件起因是源自 Cacti 注入漏洞引起, Cacti Centreon企业服务器版本2.2->3.0 存在远程SQL注入和远程命令注入漏洞 。
提权GETSHELL 发现到挺有意思的是个内网,是个典型内网服务做了端口路由映射公网。看起来安全做的很高大尚。
网络拓扑图:
通过上图网络架构大概搞清楚目标内网环境,在这时候发现Linux版本Centios 6.5 内核较新 ,放弃对内核提权,没有ROOT 权限, 必需使用一个低权限的工具来执行,并反弹加代理方式把内网环境转发到公网proxy 使用。
此时该台内网机器数据包已经转发到公网上了,接下来操起 proxy 工具开始吧,虽然是内网环境但其实数据是经过外网转一圈回到内网,扫描时候并发不能开太大,很容易触发防火墙规则,并发进程设置为最小,数据包慢慢经过防火墙。
通过一系列服务扫描 从C 段扫描得到N WEB 服务弱口令,其中有个私有云服务器,接下进入管理界面。
对该云系统继续分析, 其中发现一台监控服务器中的发邮件脚本存在密码 , 拿到密码生成一份字典,又继续对其它内网网段做各种扫描 。
查看下该台服务器管理员访问记录 SSH 登陆的IP 192.168.XX 就是办公网络地址
拿到办公网一台加域服务器,并利用WINDOWS 组策略陷获取系统并提升域管理员权限,ruby 脚本解密出Groups.xml 文件AD 域控管理密码 ( 小编只能说 运气真好 而且密码还竟然TMD的有效? )
C:/Users/All Users/Microsoft/Group Policy/History{A1C0C41B-D2F8-401B-A5D1-437DA197A809}/Machine/Preferences/Groups/Groups.xml
安全脉搏SP小编附上ruby版的GPP解密脚本gpp.rb
require 'rubygems' require 'openssl' require 'base64' encrypted_data = "The Password here(SecPulse.com)" #encrypted_data = ARGV def decrypt(encrypted_data) padding = "=" * (4 - (encrypted_data.length % 4)) epassword = "#{encrypted_data}#{padding}" decoded = Base64.decode64(epassword) key = "/x4e/x99/x06/xe8/xfc/xb6/x6c/xc9/xfa/xf4/x93/x10/x62/x0f/xfe/xe8/xf4/x96/xe8/x06/xcc/x05/x79/x90/x20/x9b/x09/xa4/x33/xb6/x6c/x1b" aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC") aes.decrypt aes.key = key plaintext = aes.update(decoded) plaintext << aes.final pass = plaintext.unpack('v*').pack('C*') # UNICODE conversion return pass end blah = decrypt(encrypted_data) puts blah
登陆到域控服务器,使用mimikatz dump内存中域管理员帐号和密码,并通过vssown.vbs + libesedb + NtdsXtract 拿到域数据库ntds.dit 和SYSTEM 文件
到这步已经控制内网AD域控服务器包括Exchange MAIL
安全思考:
大部份企业安全只做了单维度防护,攻击者利用0DAY 或因安全意识不足造成攻击,通过该攻击进入到企业内部网络,但许多检测系统目前为止还是依靠特征来发现,因此对一些未知的攻击手段必需要有行为去判断,并且要更多层次的维度来进行,把每个漏洞和黑客攻击手法制定策略并建立起来。
“魔高道高,道高魔高”网络攻防是两者长期博弈“战场”,现如今的安全发展,被动防护同时也要走向“主动防御“思路。
【本文来源: Cacti 监控系统注入漏洞引发的血案 SP小编编辑发布】