趁着过年有时间通关了《刺客信条2》三部曲,俗称E叔三部曲。
其中第一作是在上个暑假玩的。为了抵抗读代码带来的憋得慌效应,找点借口就把《兄弟会》和《启示录》打通了。

从活动目录获取域管理员权限的各种姿势
From: Attack Methods for Gaining Domain Admin Rights in Active Directory
by Sean Metcalf
译文首发于:乌云知识库
对于一个攻击者来说,有很多方法能在活动目录中获得域管理员权限。这篇文章旨在介绍一些当下比较流行的方法,这里介绍的方法都基于一个前提——攻击者已经获得内网中一台(或几台)机器的权限并且获得了普通域用户的账户。

抓虫三定律
总是在过节的时候产生一些稀奇古怪的想法。
由于一个总所周知的小典故,漏洞的英文是Bug,直译过来是臭虫,那么自然找漏洞就可以理解为“抓虫”,接下来想简单谈一谈关于找漏洞(侧重Web方面但应该也适用于其他范畴)的一些想法。结合自己和前人的经验加上了解到的情况,总结出三条规律,故此称为“抓虫三定律”。

搬家
终于把域名绑到来GitHub Pages这边,也就意味着以前的WordPress站点关闭了。掰掰手指头算算,距离开设独立站点写Blog的时间马上就要满三年了,想当初觉得有自己的一个独立Blog很酷,在同学的影响下买了域名和主机空间,开始用WordPress。三年下来也只是装模作样地写了二三十篇屁话连篇的文章,再想想当初的满腔热血,似乎有点羞愧难当了。
回想起当初的折腾,现在还真是觉得好笑。挑选主机空间一定要选香港的,即便是和美国主机相比贵上不少。主要由于在学校的时间长,能正正经经用电脑写Blog的时间怎么也不会太多,那就寄希望于选个访问快点的主机,用手机来写。装WordPress的时候又折腾了一番,找了个看起来挺高端的“瀑布流”主题,那会就流行这个,有点类似现在Pinterest,完全没有考虑到这样的主题是是要靠图片来支撑才好看。于是博客一开始就是满屏文字的瀑布流模样。。。
等搭建起来能够稳定使用以后,才发现用手机写Blog的想法是多么不切实际,即使是有实体全键盘的加持,打上百儿上千个中文字还是一件很困难的事。有时候下定决心写点什么东西,仔细想想有觉得没什么好写的,即使写了出来也没什么人去看。结果就无限期地丢弃在那里,所以访问量我是从来不会去看的,反正是自己做主的博客,没人催稿,不用对谁负责,自己开心玩玩就好。
那么既然是抱着这样的想法来使用博客的,那么一百大洋一年的主机价格好像有些奢侈了,干脆就挂在GitHub Pages上面好了,不用钱还比较稳定;既然是抱着这样的想法,那么评论系统也可有可无咯;既然是抱着这样的想法,那么花哨漂亮的东西就不用费神搞太多了,看着舒服就好。
曾经看过一个观点说,大多数独立博客都撑不过半年的,开始可能两三天一篇更新,到半年以后就基本没有更新了,渐渐就荒废了。想想也是,除非是骨灰级的话唠,没有任何利益驱动下坚持写博客,一般人既没有精力,也没有题材;即使是骨灰级的话唠,半年天天对着写,有什么话都说得一干二净了吧。所以博客在我这里倒是更像一个玩具,喜欢就研究下有什么新的花样来写博客,从WordPress到Hexo,真的,可能真的只是因为我喜欢折腾而已。

GitHub 简易装逼小记
最近思维有点混乱,得强迫自己写点什么东西来理顺一下思维。自从上了大学,除了话变少了,码字好像也越来越不顺手了,经常表达不出自己的想法。这可不行,想当初老子语文考试写作文哄骗老师的能力还是有那么一点厉害的。写点什么好呢,就随便写写最近在GitHub上混的事情好了。
GitHub的大名我是早就听说过了,被誉为是广大码农的救赎,从此以敲代码为生的广大互联网工作者就走上了以代码结交损友的不归路。各大开源项目纷纷在GitHub拉起大旗,招兵买马,霸占山头,企图借助这一神奇的社区做大做强。而我对于GitHub的认识在很长一段时间仅仅停留在git clone
这一命令上,因为很多神器都是依托GitHub来发布的,更不用说各种乱七八糟的依赖包,万一系统源中没有收录,git clone
往往是值得信赖的灵丹妙药。
如果你只打算通过GitHub安装开源软件或者纯粹读读大牛们写的代码,一条git clone
加上浏览器足矣。但是,年轻人,看着有些写得那么烂的代码,你就没有一种想死磕对面程序员,通过自己动手修改代码拯救整个开源项目的冲动吗?看着有些写得这么好的代码,你就没有一种想认识对面程序员互相切磋切磋的冲动?或者是你有一个惊天动地的idea,想让世界各地的程序员来帮助你完成这个idea,把它的光辉照耀到世界的每一处角落。如果你有上述的任何症状,这时你就需要一个叫做git的东西来帮你打开新世界的大门。

Centaur
0x01 What
Centaur 是一个基于代理转发的分布式扫描系统。
0x02 Why
为什么需要这样的软件?
互联网时代,企业需要确保自己网络的安全来保障业务的正常运作。渗透测试就是其中一种通过发现漏洞来确保网络安全的测试方式,而专业完整的渗透测试对于测试人员来说往往费时费力,单一地用扫描器发现漏洞误报率高,效率低,流量大容易拖慢网络。所以一个灵活快捷的辅助型扫描系统将大大降低测试人员的工作量,提高测试的效率。
为什么采用这种架构?
之前也有写过基于scarpy的爬虫式扫描脚本,效果不是很理想,原因如下:
- 精准度。大多数情况下扫描系统都是对某一固定的目标进行检测,而基于爬虫的扫描系统发散性较强,往往几个链接就爬到了其他无关站点导致偏离目标。
- 灵活度。由于scarpy的架构,一旦开始了抓取就容易失去控制,即使通过输出看见偏移了目标站点也无法即使改变方式。另外对url的识别也不够成熟。
- 效率。其实一切问题都是效率的问题,爬虫适合大规模抓取url,但是实际可能存在漏洞的url少之又少,还要写比较精密的过滤器来去重和识别。
一般Web检测都是针对目标站点的,基于代理转发的办法就相对与通过人工控制输入流,用半自动的方法提高针对性和精确度。浏览器挂上代理,代理部分处理接收的HTTP(S)数据包转发到服务器端,服务器端通过异步的方法把扫描的任务分发到各个子节点,子节点完成任务后把结果重新传回服务端并存入数据库。在渗透测试中测试人员的经验起到决定性的作用,Centaur可以把测试人员的经验和机器扫描的速度结合起来,测试人员只需正常地浏览页面,点击可能出现漏洞的链接,后台就自动开始对链接进行检测。Centaur是希腊神话中的半人马,取其为名因为系统结合了人的智慧和机器的速度,恰是战场所向披靡的半人马。
0x03 How
上面提到系统的三个部分,接下来详细谈谈实现方式。
首先根据经验,Web安全中最容易直接获取系统权限危害系统数据的漏洞一般有三类:
1. 上传漏洞
2. SQL注入
3. 弱口令
在测试过程中寻找这三类漏洞的时间占的时间比重很大,因为一旦发现攻陷系统就是分分钟的事情了,而Centaur目前主要也是往这三个方向挖掘漏洞。
架构:img
- Cilent(客户端):基于mitmproxy实现,mitmproxy所提供的libmproxy库提供灵活的方式来处理代理方式接收到的HTTP包,通过filter(过滤器)来进行去重,去掉不适用的url,去掉不相关站点链接等操作,然后通过handler把数据包按GET,POST,PATH三个分类转发到Server(服务端),其中GET对应的是SQL注入漏洞,POST对应的是POST类型的SQL注入漏洞和弱口令,PATH主要对应上传漏洞和列目录漏洞。
- Server(服务端):通过restful api的方式接收到数据包以后通过异步的方法调用celery任务分发系统,celery能自动检测在线的Worker(子节点),并把任务分发到Worker上。Server还负责把子节点的扫描结果储存到数据库里。
- Worker(子节点):对应三种不同的任务,调用不同的测试工具来检测,PATH类型对应的是dirs3arch,GET类型对应的是sqlmap,POST对应的是sqlmap和弱口令检测脚本。调用工具完成扫描后,通过sqlAlchemy用ORM方式把结果回传到服务端的数据库中。