正在加载...

这个是前两天我朋友 dcluo 在 MIT(麻省理工学院) 参加的一个黑客竞赛的实战记录

分享给大家看看 感受一下国外的技术竞赛魅力

———————————————————————————————————————————————-

– 第一届 MIT CTF 2011 信息战随笔 –

此次经历,值得记录

(我尽量写的详细,希望各大学校组织效仿这类比赛)


前言:

事情追溯到几个月前在 hackathon 有幸认识了一位MIT 计算机女强人 haoqi 同学。

(hacakthon是微软举办的一个过夜的“搞破坏者”的集会。)在大约凌晨2点左右。。

我和她都被微软强行推荐的 Windows 7 Phone 寂寞无聊的不行。

我突然对她说,你对网络入侵感兴趣么?

一下子,一拍即合。于是引导了今天和昨天 20个小时的入侵攻防信息战模拟。

比赛名称:MIT CTF 2011

时间:4月2~3日 早8:30 – 晚9:00点

地点:MIT

人物:韩国网安内核牛+haoqi+我 + 其他12个组(~45人)

比赛规格:

•    13组小队(MIT,BU,UMASS,NE…)

•    一个组一个VM (ubuntu 10.10 + 最新apache+mysql+wordpress) 分别运行在同一个虚拟机服务器上但是不同IP和Domain。

•    每个组一个SWITCH BOX 和 名为 ctfuser 的用户权限(ssh) 和三个密码 (ssh+wordpress+评分页密码)

•    Wordpress 每随机一段时间会要求安装一个plugin。

•    每天可以有一个snapshot和三次全盘恢复机会。

任务目标:

1.    获取其他组的flag (128位String) 这个flag 散落在VM的各个角落(文件或数据库里)

2.    保护自己的wordpress 和 plugins 都能正常运行,保护自己的flag 没有被更改过

3.    flag 每10分钟改变一次, 有可能会改变位置 (裁判是root 权限)

除了ddos 和 spoofing 其余手段的均可

评分标准:

•    Availability (可以fetch wordpress的xmlrc 以及plugin的正常工作)

•    Confidentiality (被别人提交flag的数量)

•    Integrity (flag被人改的次数)

•    Offense (提交旗子百分比)

•    以上是基于每分钟随即次数刷新计算的


介绍差不多了,下面开始!

———————————————————-

DAY1

风和日丽的星期六早上,我7点的闹钟就把3点才睡的可爱室友们吵醒,

收拾设备赶去参加了这次打着 Lincoln Laboratory 多名科学家名义下的比赛。

下了出租车,快步跑到了计算机房就被MIT的设备震惊了。

大概3百平方米的房间里,散落着20面三个客户机一桌子。

环绕房间一周的是8台180寸(目测)投影仪,一台为比赛拆包的ESX 服务器和13包崭的新Switchs。

身为第一个抵达现场的,我优先选了一个角落的一个桌子。

这个角度,我可以看到别的组的屏幕(邪恶),不过事实证明信息战的时候根本没时间看(= =!)此处省略一万字感叹。

我笔记本6个terminal ssh待命 + 网本wireshark 嗅开始。 8:30所有虚拟机上线。


8:31 @ 4月2日

6个terminal 里 一顿回车,复制粘贴了10位随机字符的密码,连入!

第一件事:加固!scp上传了已经事先准备好了的加固script 后, ./install.sh !

由于很多大牛都问我怎么加固的这里简单介绍下: 加固脚本分为4个部分。

Mod_security , htaccess , chown 和 cleanup。

加了apache mod 后大部分的侵略性数据包都能比较轻松的过滤掉

(我们升级了下,所有get 和 post 含有union, concat, 3,4,5 等都丢包)。

Htaccess 一些重要www目录,例如 /wp-admin.  关于chown, 我们把所有 /var/www/ 权限扔到了一个新建plug-in用户。

之后安装了blocker.php 和ssh iptable设置,

sudo rm /etc/apache2/conf.d/javascript-common.confsudo 和rm /etc/apache2/conf.d/phpmyadmin.conf (嘿嘿嘿。。)

不到一分钟,执行完毕。 我们当然需要root 才爽嘛。这件事自然交给了韩国网安内核牛,一回车,root权限拿到。

(有兴趣的同学可以看看内核牛的CV。2年韩国情报员;MIT GPA 5.0/5.0 ;Microsoft高薪聘请他拒绝了三次,

最后邀请到win 7 开发团队,做了没多久他还是觉得没意思。再Ps:打听到了win7源码8G 需要16个小时compile)

坏笑着apache2/access.log 里面各种各样被拒绝的变种数据包,随便粘几个地址,节省我好多vim plugin的时间!

前文我提到了我同时用6个terminals,我说下每个terminals的工作:

2个terminal负责 apache 和 inode 文件创建修改 log, 1个(半屏)负责读php 代码找漏洞,另外三个nc  端口待命。

正当坏笑没有任何非法连接能进入到系统的时候,并且读log利用这些链接乱注入别人的时候,

抬头看到8个投影射出的评分板,我们的分数从第一在往下高速下 滑!!Availability!!

此时比赛已经进行了3个小时,评委耐不住好奇,跑到我们面前问为什么不能正常fetch 检查网站在线。

原因很简单:我们设置的有点过分了。

根据我们的设置,

评分的python脚本发送数据包的速度> 5个数据包/s 所以每次批量检查运行情况,我们服务器会他们的ip链接进行50秒的静默。

其中,正常的apache访问,我们加了个\n 来防护xml 相关攻击。

由于裁判的疏忽,py的指针读取第一行发现是空行,以为服务器不在线。

在那半个小时之后,我们才迅速trouble shoot 自己的配置来满足裁判的评分接口。

来回来去跑到控制塔向裁判complain 无望,我们的分数已经跌了81% 顺利获得了另一个第一:倒数第一!(低于倒数第二12%)

接下来是12:00-1:00的lunch break, 此时韩国牛,haoqi还有我都一脸忧郁。

12:03 @ 4月2日

盯着评分版,愤愤不平的和组员们去了student union吃饭。 有心无心的嚼着饭,分析着利弊。

我们的除了availability 其余项目都第一或第二。但是我们已经已经有了貌似无望回天的比例丢失。


1:01 @ 4月2日

拖着平平的脚步回到赛场,坐下。

挠着已经麻木的头,分析自己的优势:没有一个队伍得到或者更改了我们的flag。

毫不客气的拿着他们的log, 我们开始利用他们的提交肆虐攻击其他服务器。

经过了大概一个小时,我们获得了大概4个站的eval 和3个站的 exec。

韩国牛迅速写了个py收集,我负责迅速编写反弹shell+找php漏洞, haoqi同学负责提交 flag。

这里给下例子flag 长什么样:

lfTogfKGCdnt5pEACWISafVsyqAuXYQEmfMbaBQc0QnuoYNrWZQ0aWkSFzqcyrb8ViGds3QebrBCjWMIoUQjkNWcMY7vE8sVwGbG7glOy1IIuBY2UWXQbaLPk3tQ8u8b

tTc1pkcVTwYDfTIQuCCTonCq84AEKOhsLVXqlYj5rbTtgZpHqVjlATE7qo4gTg6DiO8X0543AuNXGjF8WtcqKWQ9yVXgth6tzO3lJVa9sMqeXD03UyQC5R5yuNROgDhO

8fMDJPTZaQn1BK026Xf4vXgiYKWvaj6QwVIuQ58tzgqnuH3sFrKnCNMwYFIfJ35jP8nVtXytjf73hZksIPgObCBGWLfXEE1YAMRUCgtAaBNiXMBfThUKX4yl68vESUEU

RHoXzhQwhuaOQGmdaSWnOb0fCwNpTM7YgMwXzKUoQRaAeLUfBF1JV19oPj5XV1wXDD4D2nBAYpCNKkCecswHEOMHikmU5OCYvB90vuer2d4yKFpqNqfzJlIemVQ6yFs5

以上是4个 flag的样子。 提交的网页也很是变态,是个https的链接,我一直没找到合理的脚本接口。

这里感谢Anthr@x牛的hint, 用php 成功写了个较高效率的提交脚本。

此时的我们,韩国牛疯狂的在打键盘攻击, 我疯狂的在vim /eval , 和haoqi疯狂的提交。

我们在下午场提交了 70-80多个flag  并保持着唯一的 100%  Confidentiality。

让一个平均值增长是个艰苦的过程,一直到7:00PM我们排名8/13。

所有虚拟机暂停!也许是觉得不公平吧, 虚拟机虽然停一个小时逼我们去吃饭,但是我们没有!

我和韩国牛在埋头写代码和攻击脚本,此时的haoqi 贤惠的帮我们去买饭。

20:02 @ 4月2日

边吃着盒饭,边敲着键盘的我等待着服务器恢复。

Ssh一通,我们顺利的吧脚本传上去,

顺带着把先前A牛给我的rips 传到www (这里介绍个命令 grep –ir “eval(” .所以rips用处一般)。

这时的别的队,很多已经被迫下线甚至删干净了(密码都一样绝对悲剧!)。

看到很多队伍跑到主机塔那里,管裁判要恢复机会,我们的脸上已经都露出了很坏的笑容。

看着别的队伍无助的链接请求,身为唯一只有三个人团队的我们已经挤进了前三名。

一个小时很快就过去了。 9:00 我们带着激动和希望回家了。


第一天入侵总结:

Eval(), exec() 是基本利用,但效率才是输赢关键。

根据不同的漏洞,能在他们发现并打补丁前迅速做出同时或短时间相继攻击其余12台服务器的脚本或代码。

这里说下,别的队 伍也不是卖白菜的。也是设置要多变态有多变态。

有的队伍设置了个https 在他们的服务器,有的队伍的网页域名直接转向到某ip地址,

有的队伍索性屏蔽了除了裁判所有其他人的ip (后被认为作弊,但没扣分),

更有恶心的队伍直接把所有东西跳转到当时排名第一的队伍。。。

大家形形色色的信息攻击虽然trivial但是也需要很多技巧。

大家都是在不停刷新log, 每看到一个链接,大家都是迅速切断。

在那1-2秒里,我们必须得做到提权,或者偷旗子。

比赛无时无刻都体现出能用好一个editor的重要性。

这里小d敬告读者,emacs 或者 vim 选一个!用好它,造福你一生!


———————————————————-

DAY2
依旧风和日丽,7点闹钟。

一脸的懒散,蹒跚到i7前打开qq,看到了各位大牛的各种留言,马上得唆起昨天惊心动魄的信息战。

迅速的跑去刷完牙,继续和牛们各种扯淡。殊不知在我早上沾沾自喜的时候,排名后面的队伍都是不眠夜。


8:49 @ 4月3日

比赛开始的晚了一点,因为有几个队伍已经没有信心主动退场了。

Well, 我们还是等了他们。 这时的我们做下资源清点:我们手上有3台webshell, 4台root 。

还是惯例性连过去偷旗子。 这里要表扬下team6, 他们把他们收集到的旗子都很整齐的存在他们系统里。

帮我们节省了很多时间。慢慢的大概10:30左右,我们脚步放慢了,也不紧张了。以为比赛已经进入了僵局。

此时我们还保持着晋升的第二。这时我们的队长收到了一封social engineering的邮件。

我们可爱的队长,就这么被社工了。其他队伍真是yd啊!

跑去注册了http://mitctf-2011.wikispaces.com/grading-Key 做的和官方网站一模一样,

但是多了个警示:所有的队伍请检查ssh key是不是和这个相等,

ssh-rsa

AAAAB3NzaC1yc2EAAAABIwAAAQEAtAxPlNf+AWFr3Fn/lN9g4XBkxN7JX3YxZwxYMGixEj0iGSq3B0Lx8tgENISh6PEF6xzZoCv2btQT1Sarf7LLtHygjhGss

/6wxX+uhsbrGAEkVcuO3ESxZPesvgf1KAZ0jW5ct7VW5B7u4zL1aC2hL5UQ4hHGIR2CFHKNl9f8wsL9XORfMPBN44Qfyjjhv9qjMx69kxc+wA9jdwsVUTLhgHmRtlubMIMXrfwICObsAEyjg

/DRAH78KOZrra9RFwovT09BX07EsWN0kNeie4Off2GFAAmR+cgP0NseCTcP2Jb

/yNt7PsoAwPIOp4sYme+t3EUBOd+ooOBRRxm4v80YKQ==timleek@thunk.local

韩国牛看着public key 想都没想,就发现不对了。此处省略50字。

几乎是同时发生的,我刚打完ls, 返回路径没了。cd .. 路径没了!pwd 没了!!我们的VM被人整个格式化了。

一切都发生在不到20秒里。脑子一下空白,紧张的跑到控制台申请恢复。

此时看到隔壁桌的几个人在邪恶的各种偷笑。 心里气愤和怨恨!

Ssh进去后,镇定一下,修改root密码,检查iptable, 只允许我们组员的ssh链接。

这时大概1分钟过去了。Haoqi告诉我,网站被改成了一个youtube视频!命令行里再一执行,又被一锅端了。

Pipe broken! 服务器第二次被删空。这下好,我们都被杀红了眼,第三次跑到了服务台,申请了恢复和3分钟服务器执行时间。

很明显我们的假设是错的。就这样,我们守着个空VM唯一能做的就是metasploits别的服务器。

基本无望,因为貌似别的服务器也都陷入了同样的窘境。

Team7 是team7!! 本来垫底的他们一直赶超取代了我们的第二。

不久之后,12:00午餐时间到。


12:11 @ 4月3日

脑子一团浆糊的我,还有一脸无奈的韩国牛分析着入侵的原因。

Iptable屏蔽了怎么还是被入侵了?难道裁判被入侵了?

啃着subway,默念着,希望能保住第三。


13:XX@ 4月3日

此时时间已经不重要了,我们唯一能做的,就是尽一切可能攻击别的团队。

下载来metasploits到我的笔记本,开始尝试各种payload,面对新版本或者和我们一样的系统统统无效。

过了一阵子,team7上升的强势已经注定了我们败下第三。经过检测发现只有两台VM服务器在运行。

一台apache stop了,其中一台就是攻击我们的人。

时间一下子充裕起来,回想下失败在哪里。

绞尽脑汁也想不出来,于是乎打开了wine 玩起了cs消磨时间,加入了寂寞等待比赛结束的队列。

省略1万字的时间过去了,我们的服务器已经关机了7个小时的无奈,和赞叹技术不如人。

毕竟,连入侵手法我们都不知道!!


19:XX @ 4月3日

经过我们强烈的要求,要求第七组 (UMass) 公布入侵我们幻想的无敌服务器思路时候,

我们才了解到,他们全组5个人一晚上没有回家。昼夜睡在了MIT分析所有plugin。

他们漏洞的利用,我虽然第一时间看到了,可是完全没有当回事。

因为一眼望过去,复杂程度不是20个小时的比赛所能完全利用的。

正因为这样,当有付出的时候 才有回报。他们的付出让他们从倒数第一,杀到了第二名。

他们把数据包巧妙的修改,cookie base64加密,然后利用源程序解密,巧妙的绕过了我们所有的base64, eval检测。

他们不惜一切代价,搞到了XXX提权,我们的内核牛都没打的补丁。

10分钟里就把除apache不运行的服务器全都ko掉。

攻击的深度,速度,和准度无不映射出来,我熟睡时他们下血本的邪恶的阴谋!

我们灰溜溜的离开了这个无硝烟战场。


第二天入侵总结:

有付出就有回报。垫底总有翻身的一天!坚持不懈,就会看到光荣榜上你的名字。


笔者:dcluo

提供:VM 源代码,plugin 打包, 攻防wiki

未校对 2011年4月4日 凌晨1:40分

——————————————————————————————————–

VM:

http://mitctf2011.wikispaces.com/Competition+VM

说明下 我和 dcluo 测试过

貌似被写死了平台只能在ubuntu的VMPlayer上启动

Windows下启动不鸟

plugin打包:

http://u.115.com/file/f47ab66eae

攻防wiki:

http://mitctf2011.wikispaces.com/MIT+CTF+external+links+for+self-study

来源:http://hi.baidu.com/hackercasper/blog/item/1e165434c681340490ef398c.html

: http://www.ha97.com/4042.html

本文相关评论 - 才 9 条评论
sean
2011-05-13 20:50:04
Firefox 3.6.13 Firefox 3.6.13 FreeBSD FreeBSD

很有意思的比赛

2011-06-09 16:48:01
Firefox 3.5.8 Firefox 3.5.8 Solaris Solaris

嗯,有点意思~~

暗黑凤凰
2011-05-24 12:54:30
Google Chrome 10.0.648.204 Google Chrome 10.0.648.204 Windows 7 Windows 7

唉……其实看之前就知道,自己不过是只井底的死蛤蟆。

2011-06-09 16:48:35
Firefox 3.5.8 Firefox 3.5.8 Solaris Solaris

呵,你这话说的~~

小邪兽
2011-06-16 18:53:38
Google Chrome 12.0.742.100 Google Chrome 12.0.742.100 GNU/Linux GNU/Linux

T_T 看不懂捏!!

2011-07-03 12:10:27
Google Chrome 12.0.742.112 Google Chrome 12.0.742.112 Windows 7 Windows 7

嗯,这个需要一定的系统基础和网络安全基础才能看懂。

2012-07-31 10:09:38
Firefox 12.0 Firefox 12.0 Windows 7 Windows 7

相当的犀利啊,感觉自己之前学过的东西根本实践不了

flyhaze
2012-11-29 19:59:27
Internet Explorer 8.0 Internet Explorer 8.0 Windows 7 x64 Edition Windows 7 x64 Edition

看了这个,感觉在linux方面还路漫漫其修远兮啊~

2012-12-05 09:20:01
Internet Explorer 8.0 Internet Explorer 8.0 Windows XP Windows XP

教主,俺看不懂捏