1、《鸟哥的私房菜(服务器架设篇)》30%

2、《黑客与画家》完!

3、《史蒂夫·乔布斯传完!

4、《黑客大曝光:Web应用程序安全(原书第三版)》30%

More...

写在故事之前

身为一位渗透测试人员,比起 Client Side 的弱点我更喜欢 Server Side 的攻击,能够直接的控制服务器、获得权限操作 SHELL 才爽 <( ̄︶ ̄)>

当然一次完美的渗透任何形式的弱点都不可小觑,在实际渗透时偶尔还是需要些 Client Side 弱点组合可以更完美的控制服务器,但是在寻找弱点时我本身还是先偏向以可直接进入服务器的方式来去寻找风险高、能长驱直入的弱点。

随着 Facebook 在世界上越来越火红、用户量越来越多,一直以来都有想要尝试看看的想法,恰巧 Facebook 在 2012 年开始有了 Bug Bounty 奖金猎人的机制让我更跃跃欲试。

一般如由渗透的角度来说习惯性都会从收集数据、侦查开始,首先界定出目标在网络上的 “范围” 有多大,姑且可以评估一下从何处比较有机会下手。例如:

Google Hacking 到什么数据?

用了几个 B 段的 IP ? C 段的 IP ?

Whois? Reverse Whois?

用了什么域名? 内部使用的域名? 接着做子域名的猜测、扫描

公司平常爱用什么样技术、设备?

在 Github, Pastebin 上是否有泄漏什么信息?

…etc

当然 Bug Bounty 并不是让你无限制的攻击,将所搜集到的范围与 Bug Bounty 所允许的范围做交集后才是你真正可以去尝试的目标。

一般来说大公司在渗透中比较容易出现的问题点这里举几个例子来探讨

  1. 对多数大公司而言,"网络边界”是比较难顾及、容易出现问题的一块,当公司规模越大,同时拥有数千、数万台机器在线,网管很难顾及到每台机器。在攻防里,防守要防的是一个面,但攻击只需 找个一个点就可以突破,所以防守方相对处于弱势,攻击者只要找到一台位于网络边界的机器入侵进去就可以开始在内网进行渗透了!
  2. 对于 “连网设备” 的安全意识相对薄弱,由于连网设备通常不会提供 SHELL 给管理员做进一步的操作,只能由设备本身所提供的接口设定,所以通常对于设备的防御都是从网络层来抵挡,但如遇到设备本身的 0-Day 或者是 1-Day 可能连被入侵了都不自觉。
  3. 人的安全,随着 “社工库” 的崛起,有时可以让一次渗透的流程变得异常简单,从公开数据找出公司员工列表,再从社工库找到可以登入 VPN 的员工密码就可以开始进行内网渗透,尤其当社工库数量越来越多 “量变成质变” 时只要关键人物的密码在社工库中可找到,那企业的安全性就全然突破。

理所当然在寻找 Facebook 弱点时会以平常进行渗透的思路进行,在开始搜集数据时除了针对 Facebook 本身域名查询外也对注册信箱进行 Reverse Whois 意外发现了个奇妙的域名名称

More...

0x00 Hacking Team

Hacking Team 是一个协助政府hack和监视记者、政治家等的公司(详见段尾链接),当然有时候也会监控恐怖分子和罪犯。其CEO——Vincenzetti——很喜欢在他的邮件末尾加上一句纳粹标语“boia chi molla” (放弃者该死),同时,他一直宣称拥有可以解决“Tor 问题”和“暗网问题”的技术。但是我一直很怀疑他的那种技术的有效性。

0x01 小心点

很不幸,我们的世界是颠倒的,你越做坏事越富有,越做好事反而被抓。但幸运的是,多亏了人们的努力,比如"Tor项目",你可以通过以下指导来防止被人抓住把柄:

1) 加密的你的硬盘

如果有一天你做的事被发现了,警察叔叔带走了你的电脑,尽管被发现就意味着你已经犯了很多错误,但是加密硬盘会比不加密要好得多。

2) 使用虚拟机并且把所有的网络都走Tor

这样就实现了两点,第一、你的所有流量都匿名了。第二、把你的个人生活和匿名操作分开了,防止两种生活互相混合。

3) 不要直接连接Tor网络 (可选项)

Tor不是万能药,有可能你在连接到Tor网络的时候刚好在做坏事。也可能你在退出Tor网络的时候你同样在做坏事。最好还是用别人的wifi,或者连接vpn或者中转机子,然后连接Tor匿名网络。

0x02 搜集信息

尽管这个过程非常无聊,但却是非常重要,目标越大越多,漏洞出现的几率就越大。

1 技术方面的信息

主要使用以下各种方面的信息

1)Google

如果使用合适的语句,你可以发现大量的意外收获。

2)二级域名搜集

一般来说,域名大部分都是又第三方公司提供的,你需要寻找到其域名的IP范围。当然,有时候会存在DNS域传送漏洞,这样就更好搜集信息了。

3)Whois查询和反向查询

通过各种Whois查询和其ip范围的域名反向查询,你也可以获得很多其他子域名,据我所知,没有免费的反向查询,除非谷歌hack。

4)端口扫描和指纹提取

和其他的技术不同,你可以跟公司的员工聊天。我把它作为可选项放在这里因为它不是一种攻击方式,只是搜集信息的一种方式。在扫描的过程中,该业务的入侵检测系统可能会告警,但是不用担心,整个Inernet都经常会扫描自身。

对于扫描来说,Nmap是再合适不过了,它也可以识别各种服务的指纹。但是对于大规模网络来说,zmap和masscan更快速。WhatWeb和BlindElephant 适合抓取web指纹。

2 社工信息

对于社会工程学来说,搜集员工信息非常重要,包括他们的各自的角色,合约,使用的操作系统,浏览器,插件,软件等。一般使用如下途径:

1)Google

这也是最有用的工具。

2)theHarvester y recon-ng

我在上一个内容中就提到了这些东西,但是他们其实还有更多的用处。你可以自动快速地找到大量的信息,这也值得你去花时间阅读官方文档。

3)LinkedIn

你可以通过这个软件获取到大量的雇员信息,内部人员总是倾向于与他人交流。

4)Data.com

它就像拼图一样把各种信息整合在一起。

5)File metadata

你可以在他们公司发布的各种文档中找到大量有用的信息。

0x03 打入内网

进入内网的方式有很多种。我打入HT内网的方式是不常见的,而且比平时花的精力要多得多,所以我在这里提一下进入内网的两种常见的方式,这两种也是我推荐的。

1 社工

社会工程学,尤其是鱼叉式网络钓鱼,是各种渗透技巧中比较可靠的一种。更多技巧请移步段尾链接。我不想尝试对HT进行钓鱼攻击,因为这种攻击方式对他们来说太常见了,所以他们会非常警惕。既增加了难度,又容易被发现我的意图。

http://www.hacknbytes.com/2016/01/apt-pentest-con-empire.html

http://blog.cobaltstrike.com/2015/09/30/advanced-threat-tactics-course-and-notes/

http://www.netcomunity.com/lestertheteacher/doc/ingsocial1.pdf

2 购买权限

多亏了勤劳的俄罗斯人和他们的渗透工具 “traffic sellers”和“bot herders”,许多公司都已经有了被入侵的电脑。几乎所有世界五百强的大型网络中都存在一些被入侵的机器。但是Hacking Team是个小公司,他们的大多数员工都是信息安全专家,所以他们内部存在被入侵机器的可能性非常小。

3 技术入侵

Gamma公司被黑以后,我就已经描述了一个寻找漏洞的过程:

http://pastebin.com/raw.php?i=cRYvK4jb

Hacking Team有一个段的公网IP:

inetnum:        93.62.139.32 - 93.62.139.47
descr:          HT public subnet

他们的网络有少量暴露在外网,比如不像Gamma公司,他们的公网地址都需要证书才能连接。HT的公网服务器主要有一个Joomla的博客(joomscan没有扫出来有用的东西),一个邮件服务器,几个路由,两个VPN,一个垃圾邮箱过滤系统。所以我现在只能通过以下方式获取权限:发现一个Joomla的0day,或者postfix的0day,或者他们其他一个系统的0day。嵌入式系统的0day对于我来说比较靠谱点,于是我花了两周的时间,通过逆向发现了一个命令执行0day。这个0day至今仍然没有修复,所以我也不方便给出更多细节。

0x04 事前准备

在正式攻击之前,我做了很多测试和准备,在硬件里面写入了一个后门,并且在嵌入式系统上编译了各种各样的工具:

1) busybox

这个工具大多数的Unix系机器都没有。

2)nmap

扫描工具

3)Responder.py

内网中间人攻击神器

4)python

这个必须得有

5)tcpdump

抓包

6)dsniff

在内网中嗅探各种密码之类的,我更喜欢用HT的ettercap,但是编译起来很麻烦。

7)socat

NC的升级版,主要端口转发

8)screen

可以让你多窗口执行命令,其实也不是太需要

9)socks5代理主机

加上proxychains,插入内网

10)tgcd

通过转发端口,穿透防火墙

最坑的事儿就是你把后门和工具部署上去之后,系统挂了,然后运维上去一看,全完了。所以我花了一周的时间在最后的部署之前测试我的各种后门和exp。

More...

0x00 借问酒家


有什么东西想拿却拿不出来?不妨开开脑洞。

clip_image001

缘起是2014年底的时候看到金山做的在线恶意代码分析系统“Fire eye”(https://fireeye.ijinshan.com/)。感觉很新鲜,丢了自己攒的几个样本丢了上去,分析的结果还算可以。从分析报告来看,它也是一类沙箱检测工具,把样本丢到虚拟机里跑,再在虚拟机内外布控,监测样本的各种行为,最后生成分析报告并给出判断是否恶意样本,分析报告里还包含样本运行时的截图。

clip_image002

0x01 柳暗


于是我开始有点好奇,这个沙箱大概是个什么样的,于是自己写了一些小的检测程序丢进去,把环境变量、系统信息、网络配置、进程列表、服务和驱动什么的读出来显示在窗体上,这样从分析报告里的样本截图就能读到这些信息了。

嘛,这里先说一下,本人并不会挖漏洞和逆向,说来惭愧,大学时候的汇编都是补考才过的。就是个小小的.net码农而已。

然后我在系统环境变量里发现一个别的地方没有的玩意:%FEKERNEL%,指向c:\mon\文件夹,想来应该是“FIRE EYE KERNEL”,即包含沙箱内部监控程序的核心文件夹。

有了这个发现自然不会放过,另外专门编写了程序去枚举和读取FEKERNEL里的东西,然而发现只要碰了那个文件夹,样本分析报告就会被隐去大部分内容,和FEKERNEL文件夹直接和间接(比如复制出来之后再读取复制的文件)相关的内容都被删掉了,想来应该是做了某种自我保护。只有读取文件夹大小的操作没被拦截。

0x02 花明


不过既然有了目标,路就好找了。试了几次找到了绕过保护的办法,成功读取到了FEKERNEL里的文件并把详细信息。下一步当然就是如何拿到里面的东西咯。

里面是大概几十MB的二进制文件,有EXE有DLL有SYS甚至还有PDB,估计是开发人员方便调试直接把符号文件也一起扔里面了。这么多东西怎么拿出来呢?最初的想法是通过网络传出来,然而沙箱的网络和互联网是不通的,对用户的唯一输出仅限样本分析报告。

然后我发现早几年前有人通过编写样本在注册表里写入HTML代码内容的键值在分析报告页面成功实施了XSS,觉得这个思路是可行的。然而几十MB的东西即便压缩成十几MB再按BASE64编码,写到一个监控程序会监控的地方,仍然没法全部拿出来,因为太多了。就算画在窗体上也…………

……慢着,画在窗体上?

脑袋灵光一闪,这办法可以啊!我先想到的是把BASE64串按能分辨的最小字号写在窗体上,然后进一步想到干脆利用窗体上的像素,一个像素表示一个字节,然后直接想到干脆一个像素用RGB分量存储三个字节,这样可输出的数据量就成几何级数上升。稍微计算了一下,按最高密度的数据传输方案,一个窗体能被截图下来的最大面积足够“画下”压缩过的完整目标数据。

思路有了,东西直接就搞出来了。由于FE只能上传单个可执行文件样本,于是把所有用到的东西打包成一个自解压RAR,并附带解压后执行脚本,先绕过保护读取到FEKERNEL里的所有内容并复制到另外的位置,然后用自带的WINRAR.EXE通过命令行将其压缩,最后把压缩包以二进制打开,把内容“画”在自己窗体上。

clip_image003

这样我就顺利拿到了FEKERNEL里的所有东西。当然这还得感谢FE在处理样本截图的时候没有做任何有损压缩,虽然是JPEG格式。

这个漏洞我已在去年提交给乌云:火眼恶意代码分析系统自保机制绕过导致二进制泄露

0x03 又一村


总结:如果有什么东西你知道在哪,但没法直接拿到,不妨冷静分析一下:

1. 你能控制的输入因素有哪些;

2. 阻拦你拿到数据的限制因素有什么,有没有绕过的办法;

3. 你能拿到的输出数据有哪些,其中哪些可以通过输入数据直接或间接控制,哪些输出数据包含的信息量最大。

综合考虑这三方面因素,并仔细分析,就不难达成目标了。

背景

最近这两年移动端真是非常火,每个单位或多或少都会有那么几款App,对于我们Web安全攻城师来说,App安全也需要或多或少的了解一些。年初单位来了一位对App安全略有研究的小伙伴,某日闲来无事教了笔者几招,分享给大家。有句古语:”工欲善其事,必先利其器”,我们要研究App安全,没有几款高大上的神器是会非常麻烦的,因此本文主要给大家分享一下笔者学到的一些基础知识,主要是一些移动端测试辅助工具的使用。

模拟器

模拟器笔者经常使用有两款,一款是BlueStacks,这款个人感觉是做的非常不错的,一般安装操作App非常流畅,不会有卡死的情况。另外一款就是SDK模拟器(Software Development Kit)了,这款是特别高大上的,类似虚拟机vm一样,可以建立多个虚拟机,安装不同的android系统。

BlueStacks

下载地址:

http://www.bluestacks.net.cn/Download/

安装的时候会提示安装”给力助手”,给力助手是辅助操作的,可以安装电脑上下载的app安装包到模拟器,也可以卸载已经安装的,还有很多针对模拟器的设置功能,如图:

clip_image001

BlueStacks安装之后,安装APP,打开App界面如图:

clip_image002

功能方面使用都非常简单,本文就不做介绍了。

Software Development Kit

下载地址:

http://developer.android.com/sdk/index.html

下载之后打开包中的eclipse,然后进行模拟器Android镜像的下载,包中自带的镜像是Android 5.0的镜像,建议下载老版本的,方便测试App,新版的镜像部分App在安装的过程中可能会有不兼容的情况。
SDK Android镜像的下载如下图所示:

clip_image003

More...