Dnmap-分布式端口扫描

在执行安全事务时,利用端口扫描搜集信息是非常重要的。当我们试着将可接受的超时时间设置得较长时,扫描就要花费大量时间。

但是,如果我们需要扫描大量主机呢?或是说要扫描整个网络呢?

这类情况下,我们需要找到一种方法能够将负载分发到多台主机上并行扫描。

幸运地是,这样的工具已经被开发出来了,它可以创建并管理一个主机集群,集群中的每台主机使用各自的带宽进行端口扫描。

DNmap介绍

2009年,Sebastian Garcia利用Python下的Twisted框架开发了DNmap。DNmap使用标准的客户端/服务端(C/S)架构创建分布式的Nmap扫描网 络。DNmap是Backtrack默认包含的工具之一,而且可以在任何装有Python的系统下轻松安装。 要注意的是,在安装并运行DNmap之前,要确保客户端能够运行任何发送给它们的Nmap命令。DNmap的设计导致它无法阻止服务器对客户端的滥用,因此你要确保能够信任你要链接的服务端。

DNmap安装

DNmap requires Nmap, Python 2.7, and the following libraries to be installed:DNmap需要安装Nmap, Python2.7以及两个第三方库:

  • python-twisted
  • python-openssl

尽管DNmap在Backtrack中是被默认安装的,但这里仍有必要介绍一下在Debian系的系统(在本例中即为Ubuntu)下如何安装DNmap:

1
2
3
4
5
jordan@pentest:~$ sudo apt-get install python-openssl python-twisted 
jordan@pentest:~$ wget http://downloads.sourceforge.net/project/dnmap/dnmap\_v0.6.tgz
jordan@pentest:~$ tar -xvzf dnmap\_v0.6.tgzjordan@pentest:~$ sudo apt-get install python-openssl python-twisted
jordan@pentest:~$ wget
jordan@pentest:~$ tar -xvzf dnmap\_v0.6.tgz

所有的文件都将下载dnmap_v0.6下

DNmap用例

DNmap的架构如下:

1

在我们的例子中,拓扑结构如下:

2

0x01. 对于C/S结构,我们首先要搭建服务端。让我们看看dnmap_server.py的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@bt:/pentest/scanners/dnmap# python dnmap\_server.py -h
+----------------------------------------------------------------------+
dnmap\_server Version 0.6
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

Author: Garcia Sebastian, eldraco@gmail.com
www.mateslab.com.ar
+----------------------------------------------------------------------+

usage: dnmap\_server.py <options>
options:
-f, --nmap-commands Nmap commands file
-p, --port TCP port where we listen for connections.
-L, --log-file Log file. Defaults to /var/log/dnmap\_server.conf.
  -l, --log-level Log level. Defaults to info.
-v, --verbose\_level Verbose level. Give a number between 1 and 5. Defaults to 1. Level 0 means be quiet.
-t, --client-timeout How many time should we wait before marking a client Offline. We still remember its values just in case it cames back.
-s, --sort Field to sort the statical value. You can choose from: Alias, #Commands, UpTime, RunCmdXMin, AvrCmdXMin, Status
-P, --pem-file pem file to use for TLS connection. By default we use the server.pem file provided with the server in the current directory.

dnmap\_server uses a '<nmap-commands-file-name>.dnmaptrace' file to know where it must continue reading the nmap commands file. If you want to start over again,
just delete the '<nmap-commands-file-name>.dnmaptrace' file

正如你所看到的,服务端的运行需要指定一个包含Nmap命令的文件。在本例中,我们使用一个名为”commands.txt”的文件,其内容如下:

1
2
nmap -A -Pn -v -p1-1024 192.168.56.103
nmap -A -Pn -v -p1024-10000 192.168.56.103

为了展现多作业的调度能力,我们向文件里面添加了多个Nmap命令。 由于我们只有一个目标主机,所以只要在多个作业间对端口范围做简单的分割即可。 如果集群中有一台以上的客户机,作业就会在客户机之间进行分配。 对于目标主机管理员而言,他很难获知隐藏在端口扫描后的真正攻击者。 0x02. 我们将Nmap命令文件写好之后,就开始启动服务端:

1
2
3
4
5
6
7
8
9
10
11
12
13
root@bt:/pentest/scanners/dnmap# python dnmap\_server.py -f ~/commands.txt
+----------------------------------------------------------------------+
dnmap\_server Version 0.6
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

Author: Garcia Sebastian, eldraco@gmail.com
www.mateslab.com.ar
+----------------------------------------------------------------------+

= MET:0:00:30.015147 Amount of Online clients: 0 =

0x03. 服务端启动之后,就开始等待客户端链接。这时再让我们看看dnmap_client的用法: 3 看上去我们要为其提供服务端地址,端口号以及客户端的别名。我们将客户端命名为”minion1″,然后链接服务端并开始运行命令

4

0x04. 再回到服务端,我们能看到以下状态:

5

看起来好象所有的命令已经完成,默认情况下扫描结果都被存储在名为 “nmap_result/.” 目录下。 我们能看到扫描结果确实被传回到服务端。希望这个简短的教程能帮助到更多人了解如何使用DNmap在多个客户端之间分发Nmap命令,而且你还可以创建多个服务端来承载更多的客户端。


学习与完善:

1.Dnmap使用文本保存方式,如何将Dnmap结果入库?

2.将结果入库后,如何使用PHP调用Dnmap完成任务分发和结果统计功能?

3.将Dnmap改写为一个 “多平台客户端管理工具”


本文转载自:安全客 原文链接:http://bobao.360.cn/learning/detail/241.html