福建省gk安全大赛writeup

有幸参加了某省首届工控安全大赛,学到了很多,发现了一些作为web狗的底层缺陷,谈谈此次比赛的体验。

预赛

题目详情

刚开始我们前方屏幕显示如下,是一个工业控制的模拟图

004

可以发现,模拟了一些工业、小区居住区的地区图。PLC,菜鸡我是这样理解的,首先web安全和工控安全,开始前期的信息收集、渗透测试都是差不多的:外网攻击,渗透内网,提权等等。最大的不同在于工控安全还跟PLC相结合,这意味着什么?一个工业的控制系统,交由某台主机控制,包括控制所有机器的操作控制,一旦紧急情况发生,重启这台主机是不行的,因为往往会造成巨大的经济损失,甚至危害到群众的生命危险,更甚者,引发灾难(震网事件、乌克兰电厂停电事件)

比赛非预期解法

刚开始我们的电脑只连接了路由器设备,主办方没有给任何ip提示。

尝试查看ip,发现是169.254.xx.xx的静态ip

1535040344678

抓个包玩玩,发现192.168.10.11

008

IPV4协议IP改为192.168.10.11,子网掩码255.255.255.0,发现ip还是静态ip(这里估计DHCP服务器关掉了,只能靠抓包分析了)

难道思路错了?nmap扫扫试试。

0011

0012

扫到两个192.168.10.11192.168.10.111,那么应该是ip冲突了,后面ip手动改成192.168.10.xx表示任意数字,这里取10,改正为192.168.10.10

1535040600687

然后再ipconfig,ok,成功了

1535040323330

成功获取ip后,可以发现,上面nmap扫端口时,192.168.10.11开放的端口贼多,我们尝试了去访问80端口,并没有发现http服务。后面,队友提示了135139445这些端口,我们准备用kalimsf“永恒之蓝”攻击,突然队友又说了句,试试3389,然后远程登录试试,我们用户名用Administrator,密码第一次尝试”000000“、第二次尝试”123456“、第三次尝试”admin“、…… 。发现无果,准备关掉去试永恒之蓝,随意输了”admin123“,结果弹出个登录成功的运行界面,卧槽,我和我的小伙伴都惊呆了,然后按照题目第三关的要求,直接添加了一个队伍名的账号,直接拿了一血,我滴个天啊。

其实,当我们手动改ip成功后,通过路由表,也是可以发现C段内的其余主机ip

1535042196717

比赛预期解法

其实这也不算是非预期解法,安全本就于此,任何漏洞都可能会被利用,不管漏洞利用的可能性是否高低,只要被利用,都是“好”漏洞。后面学习了下,问了下一些大佬,其实预期做法是通过mac地址泛洪攻击开始第一关,利用交换机的mac地址学习机制,不断的进行mac地址刷新,迅速填满交换机的mac地址表,以至崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息。而其中,我们需要获得的是ftp的账号和密码,通过上诉攻击方法,尝试登陆ftp,同时抓包会得到正确的ftp账号和密码,登陆后,取得题目第二关所要寻找的test文件。

决赛

题目详情

与昨日的预赛规则相比,最大的不同就是多了个内网的防火墙,以下为比赛的关卡:

  1. 要求获取主机SCADA系统的管理员的权限
  2. 获取SCADA系统的敏感信息文件
  3. 造成SCADA系统与靶机系统拒绝服务
  4. 修改SCADA系统监控状态
  5. 修改靶机系统逻辑
  6. 攻坚保卫战

一共6个关卡,提供了一条网线。

比赛解法

比赛开始后,接入网线,抓包看看流量的流向,发现毫无踪迹,不像昨天的预赛,可以发现特殊的局域网ip走向。

1535089134307

那咋办,想起昨天的比赛ip分配机制,网段即是按照队伍比赛序号分配的,于是,我们先直接nmap192.168.0.0/16,发现存在ip:192.168.2.217,想到昨天预赛的ip冲突,保险点,我们直接手动将ip改为192.168.2.xx为任意值,我们这里取的是218,观察流量包入下,ipconfig命令也发现ip变为192.168.2.218

1535089397191

当然,此时我们还不能确定网段,nmap再扫一下,看看同网段有没有其他的ip地址

1535089616964

nice!证明我们的判断是没错的,还发现了192.168.2.202开放的端口,看到23,想到了telnet。虚拟机kali尝试telnet登陆192.168.2.202,发现需要账号和密码。(windows10系统默认telnet服务没开,后面的telnet服务都是通过虚拟机进行的)

1535090020376

那么再namp下这个ip

1535089809260

可以看到主机名为MM-PC,尝试弱密码登陆无果。

这里有个清况,当我们以为取ip192.168.2.218,是为了不与192.168.2.217冲突,但是正是这个决定,让我们搞不清楚网段中存在哪些机器。因为刚开始,我们没像预赛开始一样通过抓包找到属于网段中的数据流向,这就意味着存在网段中存在着防火墙。如果192.168.2.202SCADAIP,难道192.168.2.217是防火墙的IP?我们尝试去ping下试试(此时ip192.168.2.218),不出所料,ping不通192.168.2.217?(防火墙一般是禁ping的,但是为了防止意味,我们后面还是手动将ip尝试改为192.168.2.217,按照常理,如果防火墙的ip为192.168.2.217,那么此时会有ip冲突,但是不可思议的事情发生了。并没有像想象中的一样会出现ip冲突,ipconfig /renew,得到的ip结果为192.168.2.217,这意味着,不存在ip冲突。再尝试了下,ping 192.168.2.217,发现竟然ping通了。此时我们猜想,是否是路由器分配了一个空的ip地址给我们的主机,而这个地址就是192.168.2.217。随后我们再次进行nmap,卧槽,竟然多了一个192.168.2.2这个新的ip,nmap再扫下192.168.2.2,发现没有开放任何服务(这里的比赛截图因为操作失误,没有成功截取)

所以这个时候,我们才真正意识到我们之前的思路错了,正确的划分,应该是,192.168.2.217是路由器划分给我们的ip192.168.2.202SCADA服务器的ip192.168.2.2是防火墙ip

比赛进行到这,我们按照这个正确的想法尝试了许久,发现192.168.2.202开放的服务只有telnet(445135139都开着,那时候还想打一波永恒之蓝)。于是我们开始手动爆破telnet的登陆用户名和密码,经过十几分钟的尝试,用户名:MM,密码:666666(这里直觉就是跟初赛差不多的弱密码,没想到最后是六个六)1535199971916

nice!但是由于之前的学习原因,没有运用过telnet协议,不知道怎么登,再加上win10跟旧版windows系统的操作差别,导致我们不知道该怎么利用,后面浪费了一点时间,才去开启windows sever2003的虚拟机试水。

windows sever2003配置ip192.168.2.66,改为桥接模式。手动配置成功后,进行下述操作:

查看网络资源管理界面

1535200338540

命令行方式下,登陆MM-PC

1535200429704

登陆成功后,查看当前SCADA服务器的ip

1535200725087

查看当前路由表

1535200767742

查看当前主机系统信息

1535201061773

随后我们添加了属于自己队伍名的用户net localgroup administrators haha 000000 /add,提权操作net localgroup administrators haha /add,至此我们成功的完成了第一关。

随后,我们按照第二关的要求,查看桌面内容,发现了密函文件,其实是个Rar压缩包文件,伪装成了txt

1535201161436

然而尴尬的事情发生了,虚拟机windows sever2003不知道如何开启远程桌面,而物理机win10,在无法外网查找资料下,不知如何开启,导致通过命令行telnet的操作只能了解到这么多的信息。后面还查看了下C盘目录

1535201482705

后面估计需要一句话写入执行开启3389远程端口,然后通过远程操作,进行后面的关卡操作。

或者正如下图所说

1535201668658

太菜了,打不动,plc层面的东西都没接触到。。。

总结

对于每一个安全问题而言,不鸣风平浪静,一鸣灰飞烟灭。此次比赛,说实话,渗透方面不算难,甚至简单,但是非常考察一名优秀的白帽子的夯实的基础能力,对协议的深刻理解、面对突发事件的应急思维和处理能力、熟悉不同操作系统命令行方式下的操作、代码执行能力等等。基础的确很重要。

0%