Information Gathering Tools

From Embedded Lab Vienna for IoT & Security
Jump to navigation Jump to search


This is a draft. Comparing various available pre-installed information gathering tools in Kali and comparing differences to ParrotOS. This document is NOT a documentation of the tools, it is merely a comparison and practical evaluation of the tools for an average security specialist or a security newbie wanting to start using the tools.


  • Operating system: Kali Linux 2021.1 amd64, Parrot Security 4.10 amd64

Disclaimer: all possible examples and tests done have been done in VMWare in a Kali Linux 2021.1 and the commands are up-to-date as of 21st June 2021.



Category: Information Gathering - Network & Port Scanners
Nmap is known to be a very powerful tool for information gathering and vulnerability scanning. It offers loads of options, offering for example for host discovery, scans (TCP, UDP, IP...), service/version detection, OS detection, firewalls/IDS evasion and spoofing, script scanning etc. Since this is not meant to be a full documentation of the tools, but rather an evaluation overview, compared to the other tools in this category, Nmap is the one main tool that most of the other secondary tools are using and it is very powerful. See the following tools for some comparison and Nmap examples.

Conclusion: If your goal is to perform a network scan to determine alive hosts, open ports, used systems on ports or used operation systems on the hosts, this would be the way to go. It is fast and efficient (speed depends on the range of hosts and ports scanned though). The other tools that offer these results are using Nmap anyway, for example the way DMitry or Legion use it.

For more information please refer to the full tool documentation.


Category: Information Gathering - OSINT
This is a reconnaissance framework that uses many modules for information gathering, working on the OSINT principle. You can access a GUI by starting the framework on a port on localhost and accessing that address via web browser once it starts:
$ spiderfoot -l
You can then set up a new scan, where you would give the program a target: this can be a domain/sub-domain name, IPv4 or IPv6 address, hostname, subnet, ASN, e-mail address, phone number, a person's actual name or username. This gives a really wide spectrum on options. The full scan is demonstrated below.

scan for a full scan, where you "get anything and everything about the target":

Execution takes many days, depending on the size of the target and the information available on the internet to that target. This specific inquiry took several days to complete and collect all information. Some parts of the information is displayed below, however the results were much more extensive:

  • Results of Spiderfoot Scan on
Conclusion: This is a very good and very powerful reconnaissance framework. It really collects "anything and everything" about a target, as it states. The scans take a very long time, but the amount of information connected is priceless, it really searches through the whole www to provide any and every connection to the target. Based on the very user friendly and well-arranged GUI it is quite good for beginners too, however the amount of data delivered is useful only for professional security analysts who know what to do with the results, how to navigate them and how to interpret them.

For more information please refer to the full tool documentation.


Category: Information Gathering - general
Legion is a GUI tool, a network penetration testing framework, that offers many options. It automatically detects CVEs and provides nmap, Vulners, whataweb, webslayer, sslyzer, SMBenum, dirbuster, nikto, Hydra and other additional scripts. Its execution takes up to a couple of minutes. A demonstration:

  • Results of Legion Scan on

No CVEs have been found.
Below is a comparison with the Metasploitable2 machine that can be found in the same subnet, so that it is clear how the vulnerabilities are shown in an actual weak system:

  • Results of Legion Scan on Metasploitable2 VM

It is safe to say that it is a very powerful and useful tool, also very user friendly and quite fast. Maybe not the best for domains in the internet because it won't offer much more information than nmap and whois lookup, but when you look at the metasploitable output, so a scan of a server, you can see how much information is shown. The implementation of Hydra also gets you the cracked passwords in the vulnerabilities which is very useful.

Conclusion: Overall definitely a recommended tool, nice GUI, works quickly and efficiently and is very well arranged and easy to navigate.

For more information please refer to the full official Legion Framework website.


Category: Information Gathering - general
DMitry is a CLI tool to gather information about a host - possible subdomains, uptime information, tcp port scan, email addresses, whois lookups etc. It is mostly used to reveal information that exists through search engines about the owner or host of a web page, i.e. for social engineering attacks.
When using the portscan option, the results show less open ports than doing that same TCP scan with nmap.

Gathered TCP Port information for                                                                                                                                                                                                                                                                               
Port           State
23/tcp          open
Portscan Finished: Scanned 150 ports, 148 ports were in state closed


Nmap scan report for
Host is up (0.20s latency).
Not shown: 996 closed ports
23/tcp   open  telnet
554/tcp  open  rtsp
843/tcp  open  unknown
5001/tcp open  commplex-link
MAC Address: 7C:DD:90:AF:4E:7D (Shenzhen Ogemray Technology)
Nmap done: 1 IP address (1 host up) scanned in 2.33 seconds

To find out information about a domain, you need either the IP or the domain same.
Whois lookup on the other hand gets you some nice useful results. Below is an example of using dmitry -w on the college website of FH Campus Wien, and it just goes to show that it is exactly the same output as if you were to type whois

Gathered Inic-whois information for
registrant:     FCW1942152-NICAT
tech-c:         NLTU11579014-NICAT
changed:        20171003 19:16:08
source:         AT-DOM
organization:   fh campus wien
street address: Favoritenstrasse 226
postal code:    A-1100
city:           Vienna
country:        Austria
phone:          +43160668771000
fax-no:         +43160668771009
nic-hdl:        FCW1942152-NICAT
changed:        20100323 17:12:46
source:         AT-DOM
personname:     Hostmaster Hostmaster
organization:   next layer Telekommunikationsdienstleistungs- und BeratungsGmbH
street address: Mariahilfer Guertel 37- 7
postal code:    1150
city:           Vienna
country:        Austria
phone:          +43517649
nic-hdl:        NLTU11579014-NICAT
changed:        20170929 13:17:54
source:         AT-DOM

Conclusion: Overall a nice tool, useful for beginners who don't have experience with the basic tools yet. However, to an experienced IT Security specialist, the tools that DMitry is based on, like nmap and whois would be the better choice to use here, since they just offer you the same output and nmap and whois itself offer much more options. One drawback however is that you need to install whois separately, whilst DMitry will be in the preinstalled set of tools. When it comes to portscan, it offers pretty insufficient results in DMitry. This tool is fairly outdated nowadays, although it used to be very good a few years ago. Now there are better alternatives.

For more information please refer to the full tool documentation.


Category: Information Gathering - general
On the first glance, it looks very similar to Metasploit. You can start it via the command line and enter an environment in the shell. It is a python web reconnaissance framework designed specifically for web-based information gathering, and is, unlike Metasploit, not an exploitation framework.
To navigate it, always utilize the help flag to view possible options. At first, you won't have any modules enables/installed, which is kind of confusing and one really has to look into the documentation first before using it because the shell environment isn't that intuitive.
To view available modules, use show modules. When you want to start now, create a workspace first where your retrieved data will be saved:

[recon-ng][default] > workspaces create test

Now install the module you would like to use, we will use hackertarget to get subdomains. You can use marketplace search hackertarget to view the module and install it by:

[recon-ng][test] > marketplace install hackertarget 
  [*] Module installed: recon/domains-hosts/hackertarget
  [*] Reloading modules...

Now we will load the module and set the source of input, which we want to retrieve data from. With the command info or input you can view the current source. Execute the module with run:

[recon-ng][test] > modules load hackertarget
[recon-ng][test][hackertarget] >  options set SOURCE
[recon-ng][test][hackertarget] >  run

This will get you 27 found hosts, after the show hosts command you can review them in an arranged list:

 | rowid |            host           |   ip_address   | region | country | latitude | longitude | notes |    module    |
 | 1     |                 |   |        |         |          |           |       | hackertarget |
 | 2     |      |  |        |         |          |           |       | hackertarget |
 | 3     |            |   |        |         |          |           |       | hackertarget |
 | 4     |          | |        |         |          |           |       | hackertarget |
 | 5     |      | |        |         |          |           |       | hackertarget |
 | 6     |       |  |        |         |          |           |       | hackertarget |
 | 7     |      | |        |         |          |           |       | hackertarget |
 | 8     |      | |        |         |          |           |       | hackertarget |
 | 9     |      |  |        |         |          |           |       | hackertarget |
 | 10    |          |  |        |         |          |           |       | hackertarget |
 | 11    |       |  |        |         |          |           |       | hackertarget |
 | 12    | |  |        |         |          |           |       | hackertarget |
 | 13    |        |    |        |         |          |           |       | hackertarget |
 | 14    |      |   |        |         |          |           |       | hackertarget |
 | 15    |       |  |        |         |          |           |       | hackertarget |
 | 16    |           |  |        |         |          |           |       | hackertarget |
 | 17    |      | |        |         |          |           |       | hackertarget |
 | 18    |          |   |        |         |          |           |       | hackertarget |
 | 19    |     |    |        |         |          |           |       | hackertarget |
 | 20    |     |    |        |         |          |           |       | hackertarget |
 | 21    |     |   |        |         |          |           |       | hackertarget |
 | 22    |     |   |        |         |          |           |       | hackertarget |
 | 23    |      |  |        |         |          |           |       | hackertarget |
 | 24    |    |  |        |         |          |           |       | hackertarget |
 | 25    |     |  |        |         |          |           |       | hackertarget |
 | 26    |          |  |        |         |          |           |       | hackertarget |
 | 27    |         | |        |         |          |           |       | hackertarget |

Disclaimer: the used Recon-ng version here is recon-ng v5.1.1, which is important to note, because countless tutorials on the internet refer to older commands which no longer work, so you kind of really have to play around with it to see which modules work (because some don't) and what commands are available by always utilizing the help flag along the way.

Conclusion: A powerful framework that offers many modules to perform reconnaissance on web-hosts. Personally would not recommend to newbies, simply because it is not that easy and intuitive to navigate, some modules are not working and the documentation is pretty lacking, with internet tutorials often showing old versions of commands.

For more information please refer to the official documentation or Github, however the documentation in this case is quite lacking.


Category: Information Gathering - OSINT
Maltego is a graphical footprinting tool with quite some extensions available. With the preinstalled extensions you can allready footprint any domain and view it as a tree, where this tree is formatted according to the amount discovered and may change to a mesh view, if it would get too crowded.

Example footprinting of

There is allready a page in this wiki for Maltego about how to create network trees yourself step by step and without the use of extensions: Maltego

Conclusion: An extensive tool for footprinting that can look intimidating at first glance, but will help a lot gathering and saving information in a graphical way. It's easy to learn, offers quick success on learning and there are countless instuctions online on how to use Maltego for any level.

For more information please refer to the official homepage or an online instruction of your choice.


Category: Information Gathering - Route Analysis
This is another reconnaissance tool that can be used for host discovery on wireless and switched networks. You can scan your subnet at home or at work, wherever your device is connected. It works through ARP requests and can detect hosts either by actively sending requests, or if you set it to passive mode, only by sniffing.
If Nmap is too much for a given moment and you just want to see quickly who is in your network, this is the way to go. Below is a comparison of Netdiscover used on a local subnet, a very well-arranged output, and nmap, which in some situations offers too much:

$ netdiscover -r
20 Captured ARP Req/Rep packets, from 16 hosts.   Total size: 1200                                                                                                                      
  IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
-----------------------------------------------------------------------------     00:xx:xx:xx:xx:c2      2     120  Cisco Systems, Inc                                                                                                                00:xx:xx:xx:xx:a9      1      60  Weinzierl Engineering GmbH                                                                                                       50:xx:xx:xx:xx:c7      1      60  Loxone Electronics GmbH                                                                                                          54:xx:xx:xx:xx:a0      1      60  Hangzhou Hikvision Digital Technology Co.,Ltd.                                                                                   18:xx:xx:xx:xx:50      1      60  Hangzhou Hikvision Digital Technology Co.,Ltd.                                                                                   54:xx:xx:xx:xx:ff      1      60  Hangzhou Hikvision Digital Technology Co.,Ltd.                                                                                   28:xx:xx:xx:xx:27      1      60  Hangzhou Hikvision Digital Technology Co.,Ltd.                                                                                   18:xx:xx:xx:xx:d7      1      60  Hangzhou Hikvision Digital Technology Co.,Ltd.                                                                                  48:xx:xx:xx:xx:2e      1      60  ZENNIO AVANCE Y TECNOLOGIA, S.L.                                                                                                00:xx:xx:xx:xx:bb      1      60  VMware, Inc.                                                                                                                    fc:xx:xx:xx:xx:f9      4     240  Ubiquiti Networks Inc.                                                                                                          04:xx:xx:xx:xx:a5      1      60  ASUSTek COMPUTER INC.                                                                                                           00:xx:xx:xx:xx:d4      1      60  VMware, Inc.                                                                                                                    c4:xx:xx:xx:xx:48      1      60  Hewlett Packard                                                                                                                 8c:xx:xx:xx:xx:eb      1      60  Apple, Inc.                                                                                                                     f2:xx:xx:xx:xx:3a      1      60  Unknown vendor   

If you were to do this same information in Nmap, you would need to perform a host discovery scan first:

$ nmap -sP                                                                                                                                                         
Starting Nmap 7.91 ( ) at 2021-06-20 16:34 CEST
Nmap scan report for    Host is up (0.0051s latency).
Nmap scan report for   Host is up (0.00058s latency).
Nmap scan report for   Host is up (0.00034s latency).
Nmap scan report for   Host is up (0.0018s latency).
Nmap scan report for   Host is up (0.0017s latency).
Nmap scan report for   Host is up (0.0037s latency).
Nmap scan report for   Host is up (0.0019s latency).
Nmap scan report for  Host is up (0.00045s latency).
Nmap scan report for  Host is up (0.00018s latency).
Nmap scan report for  Host is up (0.00021s latency).
Nmap scan report for  Host is up (0.00049s latency).
Nmap scan report for  Host is up (0.00033s latency).
Nmap scan report for  Host is up (0.089s latency).
Nmap done: 256 IP addresses (13 hosts up) scanned in 2.42 seconds

Only then you can scan each alive host separately for their Hostname/OS/MAC address with sudo nmap -O <IP address>. That is unless you want to wait several hours by scanning the whole subnet for their OS which I would not recommend since it takes so long. If you need a quick swipe, Nmap is possibly the inferior option here and could be used once you want to find out more about each host, their ports etc.

Conclusion: Definitely a useful tool for an initial scan, or in a case where you don't know what range to look for exactly, since it is very fast. If you just want to find alive hosts and their IPs in a big range, this would be a good option. Nmap however, offers alive hosts discovery as well, and if you turn portscan off, it will be much faster than Netdiscover. Netdiscover kind of connects the various options of Nmap by showing IPs, MACs and Hostnames and makes it fairly easy to use, without having to read the extensive documentation of Nmap in the hope to find the correct options to perform a simple initial scan.

For more information please refer to the full tool documentation.


Category: Information Gathering - general
Ike-scan is useful for VPN endpoints. To explain this a little, first we should know what IKE is. It is Internet Key Exchange protocol, which is used by IPsec. The majority of IPsec VPNs use IKE for key exchange. The Ike-scan tool is for discovering, testing and fingerprinting IPsec VPN systems. It sends IKE phase 1 packets to the target and displays the received responses. To be able to test this, we now need a target that we are certain uses IKE for key exchange. To achieve this, we will demonstrate this on an IP address found through, where you need to search for the keyword "IKE" to find targets that satisfy this condition. For demonstration, we chose the IP, which should be a VPN in Melbourne, Australia.

$ ike-scan
Starting ike-scan 1.9.4 with 1 hosts (  Main Mode Handshake returned HDR=(CKY-R=49cc50cbfcf85509) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) VID=dbfb81eb5760b0788562067da102d755 VID=09002689dfd6b712 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) VID=12f5f28c457168a9702d9fe274cc0100 (Cisco Unity)
Ending ike-scan 1.9.4: 1 hosts scanned in 0.356 seconds (2.81 hosts/sec).  1 returned handshake; 0 returned notify

This returns the main mode handshake and shows information like security associations (hash, encoding, authentication) and also vendor ID etc.
The following scan tries to fingerprint the firewall in use and additionally to the previous output it shows the following:

$ ike-scan --showbackoff -v -v
DEBUG: pkt len=336 bytes, bandwidth=56000 bps, int=52000 us
Starting ike-scan 1.9.4 with 1 hosts (
---     Sending packet #1 to host entry 1 ( tmo 500000 us
---     Received packet #1 from
---     Removing host entry 1 ( - Received 152 bytes
IKE Backoff Patterns:                                                                                                                                                              
IP Address      No.     Recv time               Delta Time                                                                                                                         1       1624204029.790995       0.000000                                                                                                                           Implementation guess: Linksys Etherfast
Ending ike-scan 1.9.4: 1 hosts scanned in 60.426 seconds (0.02 hosts/sec).  1 returned handshake; 0 returned notify

There is a possibility to use the so called aggressive mode (default is Main Mode) which uses a 3-way-handshake where the VPN sends an unencrypted message to the client containing the hashed PSK. If you manage to capture the plaintext hash, you could use psk-crack to perform a brute force attack and try to recover the PSK (Pre-shared key).

Conclusion: This is not a very well known tool, however it can offer some valuable insights to experienced security experts and a possibility to use the recovered data in further exploitation/scanning.

For more information please refer to the full tool documentation.


Category: Information Gathering - DNS Analysis
This is an efficient and well-performing tool for locating all DNS servers and DNS entries for a given organization. A basic demonstration on the example of is shown below (some entries have been replaced with ... to keep it as short as possible):

$ dnsenum                                                                             255 ⨯
dnsenum VERSION:1.2.6
-----   -----                                                                                                                                                                                       
Host's addresses:                                                                                        
__________________                                                                                                            300      IN    A                           
Name Servers:                                                                                            
                                                                                                                         345600   IN    A                                            345600   IN    A                          345600   IN    A                          345600   IN    A
Mail (MX) Servers:                                                                                       
                                                                                                                     293      IN    A                                   293      IN    A                 293      IN    A                 293      IN    A                 293      IN    A
Trying Zone Transfers and getting Bind Versions:                                                         
Trying Zone Transfer for on ... 
AXFR record query failed: corrupt packet
Trying Zone Transfer for on ... 
AXFR record query failed: corrupt packet
Brute forcing with /usr/share/dnsenum/dns.txt:                                                           
                                                                                                                       0        IN    CNAME                                    300      IN    A                     300      IN    A                        300      IN    A                          300      IN    A                      0        IN    CNAME
...                          300      IN    A class C netranges:                                                                            
Performing reverse lookup on 4096 ip addresses:                                                          
                                                                                                               86400    IN    PTR                                86400    IN    PTR                86400    IN    PTR              86400    IN    PTR              86400    IN    PTR              86400    IN    PTR             86400    IN    PTR              86400    IN    PTR              86400    IN    PTR              86400    IN    PTR              86400    IN    PTR

11 results out of 4096 IP addresses.
                                                                                                 ip blocks:                                                                                     


You can also use the --enum flag to gather whois information and to dig up subdomains.

Conclusion: A very convenient and useful tool for DNS information gathering on domains/servers etc. Results are also very well arranged and offer a clear overview.

For more information please refer to the full tool documentation.


Category: Information Gathering - SMTP Scan
This tool is for sending e-mails of all kinds. Now, compared to a regular e-mail client, here you can change the header, attachments, which server to talk to and more. It handles TLS, authentication, and pipelining.
Since I don't have my own SMTP server available, for demonstration purposes we will use the Gmail's SMTP server:

$ swaks -t -s -tls -a LOGIN

You will then be prompted to enter Gmail credentials of an actual existing account. However, from security reasons, Gmail will probably block this login attempt, that's why using your own SMTP server would be ideal. To have a look at some more examples of changing headers and using different servers, please refer here.

Conclusion: This tool is known as the Swiss Army Knife for SMTP (=Swaks) and helps you with the complexity of setting up e-mail servers. You have many various possibilities of choosing a mail server and changing headers and other data, that you wouldn't have if you sent an email from a simple public mail server.

For more information please refer to the full tool documentation.


Category: Information Gathering - SSL Analysis
SSLdump is a TLS/SSL network protocol analyzer that identifies TCP streams/connections from a specified port and interface and attempts to interpret them. Once it identifies SSL/TLS traffic, it decodes and displays the content in a readable form as text. If you provide a necessary key as well, it can decrypt the connection fully and display the exchanged application data traffic (ssldump -Ad -k ~/privatekey.pem -p password -i eth0 host user123). Below is a demonstration of a basic command that listens to traffic on port 443 of interface eth0:

$ sudo ssldump -i eth0 port 443                                                                                                                                                 
New TCP connection #2: <->
2 1  0.0096 (0.0096)  C>S  Handshake
       Version 3.3 
       resume [32]=
         37 64 3d 51 d2 3d 5a 44 38 c6 72 d6 7f 34 16 ed 
         cc f0 32 fe ed 95 94 67 c8 dc ec 2e f5 ba 04 cf 
       cipher suites
       compression methods
       ja3 string:  
       ja3 fingerprint: aa7744226c695c0b2e440419848cf700
2 2  0.0146 (0.0049)  S>C  Handshake
       Version 3.3 
         37 64 3d 51 d2 3d 5a 44 38 c6 72 d6 7f 34 16 ed 
         cc f0 32 fe ed 95 94 67 c8 dc ec 2e f5 ba 04 cf 
       cipherSuite         TLS_AES_128_GCM_SHA256
       compressionMethod                   NULL
       ja3s string: 771,4865,43-51
       ja3s fingerprint: f4febc55ea12b31ae17cfb7e614afda8
2 3  0.0146 (0.0000)  S>C  ChangeCipherSpec
2 4  0.0146 (0.0000)  S>C  application_data
Conclusion: This seems to be a very powerful tool with which you can actually sniff SSL encrypted traffic, and even if you don't have the private key, you can see the TLS handshake and the hello's from client and server together with their exchanged cipher suites.

For more information please refer to the full tool documentation.

What's different in ParrotOS?

As we know, you can install any tools from Kali also on ParrotOS, and the other way around, that's why in this context, the preinstalled tools are meant. Overall you can say, that the "main" tools are the same on both operating systems.

  • Information Gathering Tools Menu Preview Comparison

On the first glance the tools look very similar, however when you click on the the various sub-categories, you can see that Parrot offers a greater range of tools. Refer to the table below for a detailed overview:

Tool Category >>>>>Kali<<<<< >>>>>Parrot<<<<<
DNS Analysis



IDS/IPS Identification



Live Host Identification



Network & port scanners



OSINT Analysis



Route Analysis



SMB Analysis



SMTP Analysis swaks


SNMP Analysis



SSL Analysis