
Estou a desenvolver o Habu para ensinar (e aprender) alguns conceitos sobre Python e Hacking de Redes.
Algumas técnicas implementadas na versão atual são:
O desenvolvimento deste software é apoiado pela Securetia SRL (https://www.securetia.com/)
Vários cenários de uso úteis são detalhados em https://fportantier.github.io/hacking-with-habu/
A seguinte Playlist do Youtube tem vídeos que mostram a instalação e uso:
https://www.youtube.com/watch?v=rgp9seLLyqE&list=PL4HZnX8VnFXqSvNw7x-bXOn0dgxNdfnVD
Se quiser discutir algumas funcionalidades do Habu, possíveis melhorias, etc, pode usar o Grupo Telegram do Habu: https://t.me/python_habu
Issues e pull requests devem ser enviadas para o repositório github: https://github.com/fportantier/habu
Forma recomendada de instalar:
::
$ python3 -m pip install --upgrade git+https://github.com/fportantier/habu.git
Isto deve funcionar em qualquer sistema que tenha Python 3 instalado.
Nota: Em alguns sistemas (como Microsoft Windows) deve ajustar o comando para apontar para o caminho correto do executável Python.
Agora temos um comando para atualizar diretamente a partir do repositório Git e limpar qualquer comando antigo que já não exista ou que tenha sido renomeado.
::
$ habu.upgrade
Todos os comandos implementam a opção '--help', que mostra a ajuda, argumentos, opções e valores predefinidos.
Quase todos os comandos implementam o modo verboso com a opção '-v'. Isto pode dar-lhe algumas informações extra sobre o que o habu está a fazer.
arp.ping <#habuarpping>_arp.poison <#habuarppoison>_arp.sniff <#habuarpsniff>_asydns <#habuasydns>_b64 <#habub64>_cert.clone <#habucertclone>_cert.crtsh <#habucertcrtsh>_cert.names <#habucertnames>_config.del <#habuconfigdel>_config.set <#habuconfigset>_config.show <#habuconfigshow>_crack.luhn <#habucrackluhn>_crack.snmp <#habucracksnmp>_.. code-block::
Usage: habu.arp.ping [OPTIONS] IP
Send ARP packets to check if a host it's alive in the local network.
Example:
# habu.arp.ping 192.168.0.1
Ether / ARP is at a4:08:f5:19:17:a4 says 192.168.0.1 / Padding
Options:
-i TEXT Interface to use
-v Verbose output
--help Show this message and exit.
.. code-block::
Usage: habu.arp.poison [OPTIONS] VICTIM1 VICTIM2
Send ARP 'is-at' packets to each victim, poisoning their ARP tables for
send the traffic to your system.
Note: If you want a full working Man In The Middle attack, you need to
enable the packet forwarding on your operating system to act like a
router. You can do that using:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Example:
# habu.arpoison 192.168.0.1 192.168.0.77
Ether / ARP is at f4:96:34:e5:ae:1b says 192.168.0.77
Ether / ARP is at f4:96:34:e5:ae:1b says 192.168.0.70
Ether / ARP is at f4:96:34:e5:ae:1b says 192.168.0.77
...
Options:
-i TEXT Interface to use
-v Verbose
--help Show this message and exit.
.. code-block::
Usage: habu.arp.sniff [OPTIONS]
Listen for ARP packets and show information for each device.
Columns: Seconds from last packet | IP | MAC | Vendor
Example:
1 192.168.0.1 a4:08:f5:19:17:a4 Sagemcom Broadband SAS
7 192.168.0.2 64:bc:0c:33:e5:57 LG Electronics (Mobile Communications)
2 192.168.0.5 00:c2:c6:30:2c:58 Intel Corporate
6 192.168.0.7 54:f2:01:db:35:58 Samsung Electronics Co.,Ltd
Options:
-i TEXT Interface to use
--help Show this message and exit.
.. code-block::
Usage: habu.asydns [OPTIONS]
Requests a DNS domain name based on public and private RSA keys using the
AsyDNS protocol https://github.com/portantier/asydns
Example:
$ habu.asydns -v
Generating RSA key ...
Loading RSA key ...
{
"ip": "181.31.41.231",
"name": "07286e90fd6e7e6be61d6a7919967c7cf3bbfb23a36edbc72b6d7c53.a.asydns.org"
}
$ dig +short 07286e90fd6e7e6be61d6a7919967c7cf3bbfb23a36edbc72b6d7c53.a.asydns.org
181.31.41.231
Options:
-u TEXT API URL
-g Force the generation of a new key pair
-r Revoke the public key
-v Verbose output
--help Show this message and exit.
.. code-block::
Usage: habu.b64 [OPTIONS] [F]
Encodes or decode data in base64, just like the command base64.
$ echo awesome | habu.b64
YXdlc29tZQo=
$ echo YXdlc29tZQo= | habu.b64 -d
awesome
Options:
-d decode instead of encode
--help Show this message and exit.
.. code-block::
Usage: habu.cert.clone [OPTIONS] HOSTNAME PORT KEYFILE CERTFILE
Connect to an SSL/TLS server, get the certificate and generate a
certificate with the same options and field values.
Note: The generated certificate is invalid, but can be used for social
engineering attacks
Example:
$ habu.certclone www.google.com 443 /tmp/key.pem /tmp/cert.pem
Options:
--copy-extensions Copy certificate extensions (default: False)
--expired Generate an expired certificate (default: False)
-v Verbose
--help Show this message and exit.
.. code-block::
Usage: habu.cert.crtsh [OPTIONS] DOMAIN
Downloads the certificate transparency logs for a domain and check with
DNS queries if each subdomain exists.
Uses multithreading to improve the performance of the DNS queries.
Example:
$ habu.crtsh securetia.com
alt.securetia.com
other.securetia.com
www.securetia.com
Options:
-c Disable cache
-n Disable DNS subdomain validation
-v Verbose output
--json Print the output in JSON format
--help Show this message and exit.
.. code-block::
Usage: habu.cert.names [OPTIONS] [NETWORK]
Connects to each host/port and shows a summary of the certificate names.
The hosts to connect to are taken from two possible options:
1. -i option (default: stdin). A file where each line is a host or network
2. An argument that can be a host or network
If you use both methods, the hosts and networks are merged into one list.
Example:
$ habu.cert.names 2.18.60.240/29
2.18.60.241 443 i.s-microsoft.com microsoft.com privacy.microsoft.com
2.18.60.242 443 aod-ssl.itunes.apple.com aod.itunes.apple.com aodp-ssl.itunes.apple.com
2.18.60.243 443 *.mlb.com mlb.com
2.18.60.244 443 [SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:1056)
2.18.60.245 443 cert2-cn-public-ubiservices.ubi.com cert2-cn-public-ws-ubiservices.ubi.com
2.18.60.246 443 *.blog.sina.com.cn *.dmp.sina.cn
aod.itunes.apple.com
aodp-ssl.itunes.apple.com
aod-ssl.itunes.apple.com
*.blog.sina.com.cn
cert2-cn-public-ubiservices.ubi.com
cert2-cn-public-ws-ubiservices.ubi.com
*.dmp.sina.cn
i.s-microsoft.com microsoft.com
*.mlb.com mlb.com
privacy.microsoft.com
Options:
-p TEXT Ports to connect to (comma separated list)
-i FILENAME Input file (Default: stdin)
-t FLOAT Time to wait for each connection
-v Verbose output
--json Print the output in JSON format
--help Show this message and exit.
.. code-block::
Usage: habu.config.del [OPTIONS] KEY
Delete a KEY from the configuration.
Note: By default, KEY is converted to uppercase.
Example:
$ habu.config.del DNS_SERVER
Options:
--help Show this message and exit.
.. code-block::
Usage: habu.config.set [OPTIONS] KEY VALUE
Set VALUE to the config KEY.
Note: By default, KEY is converted to uppercase.
Example:
$ habu.config.set DNS_SERVER 8.8.8.8
Options:
--help Show this message and exit.
.. code-block::
Usage: habu.config.show [OPTIONS]
Show the current config.
Note: By default, the options with 'KEY' in their name are shadowed.
Example:
$ habu.config.show
{
"DNS_SERVER": "8.8.8.8",
"FERNET_KEY": "*************"
}
Options:
-k, --show-keys Show also the key values
--option TEXT... Write to the config(KEY VALUE)
--help Show this message and exit.
.. code-block::
Usage: habu.crack.luhn [OPTIONS] NUMBER
Having known values for a Luhn validated number, obtain the possible
unknown numbers.
Numbers that use the Luhn algorithm for validation are Credit Cards, IMEI,
National Provider Identifier in the United States, Canadian Social
Insurance Numbers, Israel ID Numbers and Greek Social Security Numbers
(ΑΜΚΑ).
The '-' characters are ignored.
Define the missing numbers with the 'x' character.
Reference: https://en.wikipedia.org/wiki/Luhn_algorithm
Example:
$ habu.crack.luhn 4509-xx08-3160-6445
4509000831606445
4509180831606445
4509260831606445
4509340831606445
4509420831606445
4509590831606445
4509670831606445
4509750831606445
4509830831606445
4509910831606445
Options:
--help Show this message and exit.
.. code-block::
Usage: habu.crack.snmp [OPTIONS] IP
Launches snmp-get queries against an IP, and tells you when finds a valid
community string (is a simple SNMP cracker).
The dictionary used is the distributed with the onesixtyone tool
https://github.com/trailofbits/onesixtyone
Example:
# habu.crack.snmp 179.125.234.210
Community found: private
Community found: public
Note: You can also receive messages like \<UNIVERSAL\> \<class
'scapy.asn1.asn1.ASN1\_Class\_metaclass'\>, I don't know how to supress
them for now.
Options:
-p INTEGER Port to use
-c TEXT Community (default: list of most used)
-s Stop after first match
-v Verbose
--help Show this message and exit.
.. code-block::
Usage: habu.crypto.fernet [OPTIONS]
Fernet cipher.
Uses AES-128-CBC with HMAC
Note: You must use a key to cipher with Fernet.
Use the -k paramenter or set the FERNET_KEY configuration value.
The keys can be generated with the command habu.crypto.fernet.genkey
Reference: https://github.com/fernet/spec/blob/master/Spec.md
Example:
$ "I want to protect this string" | habu.crypto.fernet
gAAAAABbXnCGoCULLuVNRElYTbEcwnek9iq5jBKq9JAN3wiiBUzPqpUgV5oWvnC6xfIA...
$ echo gAAAAABbXnCGoCULLuVNRElYTbEcwnek9iq5jBKq9JAN3wiiBUzPqpUgV5oWvnC6xfIA... | habu.crypto.fernet -d
I want to protect this string
Options:
-k TEXT Key
-d Decrypt instead of encrypt
--ttl INTEGER Time To Live for timestamp verification
-i FILENAME Input file (default: stdin)
-o FILENAME Output file (default: stdout)
--help Show this message and exit.
.. code-block::
Usage: habu.crypto.fernet.genkey [OPTIONS]
Generate a new Fernet Key, optionally write it to ~/.habu.json
Example:
$ habu.crypto.fernet.genkey
xgvWCIvjwe9Uq7NBvwO796iI4dsGD623QOT9GWqnuhg=
Options:
-w Write this key to ~/.habu.json
--help Show this message and exit.
.. code-block::
Usage: habu.crypto.gppref [OPTIONS] PASSWORD
Decrypt the password of local users added via Windows 2008 Group Policy
Preferences.
This value is the 'cpassword' attribute embedded in the Groups.xml file,
stored in the domain controller's Sysvol share.
Example:
# habu.crypto.gppref AzVJmXh/J9KrU5n0czX1uBPLSUjzFE8j7dOltPD8tLk
testpassword
Options:
--help Show this message and exit.
.. code-block::
Usage: habu.crypto.hasher [OPTIONS] [F]
Compute various hashes for the input data, that can be a file or a stream.
Example:
$ habu.crypto.hasher README.rst
md5 992a833cd162047daaa6a236b8ac15ae README.rst
ripemd160 0566f9141e65e57cae93e0e3b70d1d8c2ccb0623 README.rst
sha1 d7dbfd2c5e2828eb22f776550c826e4166526253 README.rst
sha256 6bb22d927e1b6307ced616821a1877b6cc35e... README.rst
sha512 8743f3eb12a11cf3edcc16e400fb14d599b4a... README.rst
whirlpool 96bcc083242e796992c0f3462f330811f9e8c... README.rst
You can also specify which algorithm to use. In such case, the output is
only the value of the calculated hash:
$ habu.hasher -a md5 README.rst
992a833cd162047daaa6a236b8ac15ae README.rst
Options:
-a [md5|sha1|sha256|sha512|ripemd160|whirlpool]
Only this algorithm (Default: all)
--help Show this message and exit.
.. code-block::
Usage: habu.crypto.xor [OPTIONS]
XOR cipher.
Note: XOR is not a 'secure cipher'. If you need strong crypto you must use
algorithms like AES. You can use habu.fernet for that.
Example:
$ habu.xor -k mysecretkey -i /bin/ls > xored
$ habu.xor -k mysecretkey -i xored > uxored
$ sha1sum /bin/ls uxored
$ 6fcf930fcee1395a1c95f87dd38413e02deff4bb /bin/ls
$ 6fcf930fcee1395a1c95f87dd38413e02deff4bb uxored
Options:
-k TEXT Encryption key
-i FILENAME Input file (default: stdin)
-o FILENAME Output file (default: stdout)
--help Show this message and exit.
.. code-block::
Usage: habu.data.enrich [OPTIONS]
Enrich data adding interesting information.
Example:
$ cat /var/log/auth.log | habu.data.extract.ipv4 | habu.data.enrich
[
{
"asset": "8.8.8.8",
"family": "IPAddress",
"asn": "15169",
"net": "8.8.8.0/24",
"cc": "US",
"rir": "ARIN",
"asname": "GOOGLE - Google LLC, US"
},
{
"asset": "8.8.4.4",
"family": "IPAddress",
"asn": "15169",
"net": "8.8.4.0/24",
"cc": "US",
"rir": "ARIN",
"asname": "GOOGLE - Google LLC, US"
}
]
Options:
-i FILENAME Input file (Default: stdin)
-v Verbose output
--help Show this message and exit.
.. code-block::
Usage: habu.data.extract.domain [OPTIONS] [INFILE]
Extract valid domains from a file or stdin.
Optionally, check each domain for the presence of NS registers.
Example:
$ cat /var/log/some.log | habu.data.extract.domain -c
google.com
ibm.com
redhat.com
Options:
-c Check if domain has NS servers defined
-v Verbose output
-j JSON output
--help Show this message and exit.
.. code-block::
Usage: habu.data.extract.email [OPTIONS] [INFILE]
Extract email addresses from a file or stdin.
Example:
$ cat /var/log/auth.log | habu.data.extract.email
[email protected]
[email protected]
[email protected]
Options:
-v Verbose output
-j JSON output
--help Show this message and exit.
.. code-block::
Usage: habu.data.extract.fqdn [OPTIONS] [INFILE]
Extract FQDNs (Fully Qualified Domain Names) from a file or stdin.
Example:
$ cat /var/log/some.log | habu.data.extract.fqdn
www.google.com
ibm.com
fileserver.redhat.com
Options:
-c Check if hostname resolves
-v Verbose output
-j JSON output
--help Show this message and exit.
.. code-block::
Usage: habu.data.extract.ipv4 [OPTIONS] [INFILE]
Extract IPv4 addresses from a file or stdin.
Example:$ cat /var/log/auth.log | habu.data.extract.ipv4
172.217.162.4
23.52.213.96
190.210.43.70
Opções:
-j, --json Saída JSON
-u, --unique Remover duplicatas
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.data.filter [OPTIONS] FIELD [gt|lt|eq|ne|ge|le|in|contains|defin
ed|undefined|true|false] [VALUE]
Filtra dados com base em operadores.
Referência de operadores:
gt: Maior que
lt: Menor que
eq: Igual a
ne: Diferente de
ge: Maior ou igual a
le: Menor ou igual a
in: Dentro da lista de valores (ou dentro da rede)
contains: Contém o valor (ou o endereço de rede)
defined: O valor está definido
undefined: O valor não está definido
true: O valor é True
false: O valor é False
Exemplo:
$ cat /var/log/auth.log | habu.data.extract.ipv4 | habu.data.enrich | habu.data.filter cc eq US
[
{
"item": "8.8.8.8",
"family": "ipv4_address",
"asn": "15169",
"net": "8.8.8.0/24",
"cc": "US",
"rir": "ARIN",
"asname": "GOOGLE - Google LLC, US"
}
]
Docs: https://fportantier.github.io/hacking-with-habu/user/data-manipulation.html#data-enrichment
Opções:
-i FILENAME Arquivo de entrada (Padrão: stdin)
-v Saída detalhada
--not Negar a comparação
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.data.select [OPTIONS] FIELD
Seleciona um campo de uma entrada JSON.
Exemplo:
$ cat /var/log/auth.log | habu.data.extract.ipv4 | habu.data.enrich | habu.data.filter cc eq US | habu.data.select asset
8.8.8.7
8.8.8.8
8.8.8.9
Opções:
-i FILENAME Arquivo de entrada (Padrão: stdin)
-v Saída detalhada
--json Saída JSON
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.dhcp.discover [OPTIONS]
Envia uma requisição DHCP e mostra quais dispositivos responderam.
Nota: Usando '-v' você pode ver todas as opções (como servidores DNS) incluídas nas respostas.
# habu.dhcp_discover
Ether / IP / UDP 192.168.0.1:bootps > 192.168.0.5:bootpc / BOOTP / DHCP
Opções:
-i TEXT Interface a usar
-t INTEGER Tempo (segundos) para aguardar respostas
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.dhcp.starvation [OPTIONS]
Envia múltiplas requisições DHCP a partir de endereços MAC forjados para preencher as concessões do servidor DHCP.
Quando todos os endereços de rede disponíveis são atribuídos, o servidor DHCP não envia respostas.
Assim, alguns ataques, como DHCP spoofing, podem ser realizados.
# habu.dhcp_starvation
Ether / IP / UDP 192.168.0.1:bootps > 192.168.0.6:bootpc / BOOTP / DHCP
Ether / IP / UDP 192.168.0.1:bootps > 192.168.0.7:bootpc / BOOTP / DHCP
Ether / IP / UDP 192.168.0.1:bootps > 192.168.0.8:bootpc / BOOTP / DHCP
Opções:
-i TEXT Interface a usar
-t INTEGER Tempo (segundos) para aguardar respostas
-s INTEGER Tempo (segundos) entre requisições
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.dns.lookup.forward [OPTIONS] HOSTNAME
Realiza uma consulta direta de um hostname fornecido.
Exemplo:
$ habu.dns.lookup.forward google.com
{
"ipv4": "172.217.168.46",
"ipv6": "2a00:1450:400a:802::200e"
}
Opções:
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.dns.lookup.reverse [OPTIONS] IP_ADDRESS
Realiza uma consulta reversa de um endereço IP fornecido.
Exemplo:
$ $ habu.dns.lookup.reverse 8.8.8.8
{
"hostname": "google-public-dns-a.google.com"
}
Opções:
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.eicar [OPTIONS]
Imprime a string de teste EICAR que pode ser usada para testar mecanismos antimalware.
Mais informações: http://www.eicar.org/86-0-Intended-use.html
Exemplo:
$ habu.eicar
X5O!P%@AP[4\XZP54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Opções:
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.forkbomb [OPTIONS] [bash|batch|c|haskell|perl|php|python|ruby]
Um atalho para lembrar como usar fork bombs em diferentes linguagens.
Atualmente suportados: bash, batch, c, haskell, perl, php, python, ruby.
Exemplo:
$ habu.forkbomb c
#include <unistd.h>
int main()
{
while(1)
{
fork();
}
return 0;
}
Opções:
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.fqdn.finder [OPTIONS] [DOMAINS]...
Usa várias técnicas para obter FQDNs válidos para os domínios especificados.
1. Tentar obter todos os FQDNs através de transferências de zona DNS
2. Verificar logs de Transparência de Certificados
3. Conectar a portas especificadas, obter certificados SSL e extrair FQDNs deles
4. Conectar a sites e obter FQDNs com base nos links do site
5. Força bruta DNS para nomes comuns
Os resultados são limpos para remover FQDNs que não resolvem via DNS.
Exemplo:
$ habu.fqdn.finder educacionit.com
barometrosalarial.educacionit.com
blog.educacionit.com
ci.educacionit.com
educacionit.com
intranet.educacionit.com
lecdev.educacionit.com
lecweb.educacionit.com
mail.educacionit.com
plantillas.educacionit.com
www.educacionit.com
Opções:
-t FLOAT Tempo para aguardar cada conexão
-v Saída detalhada
--debug Saída de depuração
--connect / --no-connect Obter certificados SSL de portas abertas de FQDNs conhecidos
--brute / --no-brute Executar força bruta DNS nos domínios
--links / --no-links Extrair FQDNs de links de sites
--xfr / --no-xfr Tentar fazer transferência de zona DNS nos domínios
--ctlog / --no-ctlog Tentar obter FQDNs de Logs de Transparência de Certificados
--json Imprimir a saída no formato JSON
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.gateway.find [OPTIONS] NETWORK
Tenta alcançar um IP externo usando qualquer host que tenha um roteador.
Útil para encontrar roteadores em sua rede.
Primeiro, usa arping para detectar hosts ativos e obter endereços MAC.
Depois, cria um pacote de rede e coloca cada endereço MAC como destino.
Por fim, imprime os dispositivos que encaminharam corretamente os pacotes.
Exemplo:
# habu.find.gateway 192.168.0.0/24
192.168.0.1 a4:08:f5:19:17:a4 Sagemcom
192.168.0.7 b0:98:2b:5d:22:70 Sagemcom
192.168.0.8 b0:98:2b:5d:1f:e8 Sagemcom
Opções:
-i TEXT Interface a usar
--host TEXT Host a alcançar (padrão: 8.8.8.8)
--tcp Usar TCP em vez de ICMP
--dport INTEGER RANGE Porta de destino para TCP (padrão: 80)
--timeout INTEGER Tempo limite em segundos (padrão: 5)
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.host [OPTIONS]
Coleta informações sobre o host onde o habu está sendo executado.
Exemplo:
$ habu.host
{
"kernel": [
"Linux",
"demo123",
"5.0.6-200.fc29.x86_64",
"#1 SMP Wed Apr 3 15:09:51 UTC 2019",
"x86_64",
"x86_64"
],
"distribution": [
"Fedora",
"29",
"Twenty Nine"
],
"libc": [
"glibc",
"2.2.5"
],
"arch": "x86_64",
"python_version": "3.7.3",
"os_name": "Linux",
"cpu": "x86_64",
"static_hostname": "demo123",
"fqdn": "demo123.lab.sierra"
}
Opções:
-v Saída detalhada.
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.http.headers [OPTIONS] SERVER
Recupera os cabeçalhos HTTP de um servidor web.
Exemplo:
$ habu.http.headers http://duckduckgo.com
{
"Server": "nginx",
"Date": "Sun, 14 Apr 2019 00:00:55 GMT",
"Content-Type": "text/html",
"Content-Length": "178",
"Connection": "keep-alive",
"Location": "https://duckduckgo.com/",
"X-Frame-Options": "SAMEORIGIN",
"Content-Security-Policy": "default-src https: blob: data: 'unsafe-inline' 'unsafe-eval'",
"X-XSS-Protection": "1;mode=block",
"X-Content-Type-Options": "nosniff",
"Referrer-Policy": "origin",
"Expect-CT": "max-age=0",
"Expires": "Mon, 13 Apr 2020 00:00:55 GMT",
"Cache-Control": "max-age=31536000"
}
Opções:
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.http.options [OPTIONS] SERVER
Recupera os métodos HTTP disponíveis de um servidor web.
Exemplo:
$ habu.http.options -v http://google.com
{
"allowed": "GET, HEAD"
}
Opções:
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.http.tech [OPTIONS] URL
Usa o banco de dados apps.json do Wappalyzer para identificar tecnologias usadas em uma aplicação web.
Referência: https://github.com/AliasIO/Wappalyzer
Nota: Esta ferramenta envia apenas uma requisição. Portanto, é furtiva e não suspeita.
$ habu.web.tech https://woocomerce.com
Google Tag Manager unknown
MySQL unknown
Nginx unknown
PHP unknown
Prototype unknown
RequireJS unknown
WooCommerce 3.8.0
WordPress 5.2.4
Yoast SEO 10.0.1
Opções:
--cache / --no-cache
--format [txt|csv|json] Formato de saída
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.icmp.ping [OPTIONS] IP
A ferramenta clássica de ping que envia requisições de eco ICMP.
# habu.icmp.ping 8.8.8.8
IP / ICMP 8.8.8.8 > 192.168.0.5 echo-reply 0 / Padding
IP / ICMP 8.8.8.8 > 192.168.0.5 echo-reply 0 / Padding
IP / ICMP 8.8.8.8 > 192.168.0.5 echo-reply 0 / Padding
IP / ICMP 8.8.8.8 > 192.168.0.5 echo-reply 0 / Padding
Opções:
-i TEXT Qual interface usar (padrão: auto)
-c INTEGER Quantos pacotes enviar (padrão: infinito)
-t INTEGER Tempo limite em segundos (padrão: 2)
-w INTEGER Quantos segundos entre pacotes (padrão: 1)
-v Detalhado
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.ip.asn [OPTIONS] IP
Usa o serviço ip2asn da Team Cymru para obter informações sobre um IPv4/IPv6 público.
Referência: https://www.team-cymru.com/IP-ASN-mapping.html
$ habu.ip.asn 8.8.8.8
{
"asn": "15169",
"net": "8.8.8.0/24",
"cc": "US",
"rir": "ARIN",
"asname": "GOOGLE - Google LLC, US",
"country": "United States"
}
Opções:
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.ip.geolocation [OPTIONS] IP_ADDRESS
Obtém a geolocalização de um endereço IP de https://ipapi.co/.
Exemplo:
$ habu.ip.geolocation 8.8.8.8
{
"ip": "8.8.8.8",
"city": "Mountain View",
...
"asn": "AS15169",
"org": "Google LLC"
}
Opções:
-v Saída detalhada.
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.ip.internal [OPTIONS]
Obtém o(s) endereço(s) IP local(is) das interfaces locais.
Exemplo:
$ habu.ip.internal
{
"lo": {
"ipv4": [
{
"addr": "127.0.0.1",
"netmask": "255.0.0.0",
"peer": "127.0.0.1"
}
],
"link_layer": [
{
"addr": "00:00:00:00:00:00",
"peer": "00:00:00:00:00:00"
}
],
"ipv6": [
{
"addr": "::1",
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"
}
]
},
...
Opções:
-v Saída detalhada.
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.ip.public [OPTIONS]
Obtém o endereço IP público da conexão de https://api.ipify.org.
Exemplo:
$ habu.ip.public
80.219.53.185
Opções:
-4, --ipv4 Imprimir seu endereço IPv4 público (padrão)
-6, --ipv6 Imprimir seu endereço IPv6 público
-j, --json Imprimir a saída no formato JSON
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.karma [OPTIONS] HOST
Usa o serviço Karma https://karma.securetia.com para verificar um IP em várias listas de Inteligência de Ameaças / Reputação.
$ habu.karma www.google.com
www.google.com -> 64.233.190.99
[
"hphosts_fsa",
"hphosts_psh",
"hphosts_emd"
]
Nota: Você pode usar o hostname ou o IP do host para consultar.
Opções:
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.karma.bulk [OPTIONS] [INFILE]
Mostra quais endereços IP estão em listas negras usando o serviço online Karma.
Exemplo:
$ cat /var/log/auth.log | habu.extract.ipv4 | habu.karma.bulk
172.217.162.4 spamhaus_drop,alienvault_spamming
23.52.213.96 CLEAN
190.210.43.70 alienvault_malicious
Opções:
--json Saída JSON
--bad Mostrar apenas entradas em listas negras
-v Saída detalhada
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.land [OPTIONS] IP
Este comando implementa o ataque LAND, que envia pacotes forjando o endereço IP de origem para ser o mesmo que o IP de destino. Também usa a mesma porta de origem e destino.
O ataque é muito antigo e pode ser usado para causar uma Negação de Serviço em sistemas antigos, como Windows NT 4.0. Mais informações aqui:
https://en.wikipedia.org/wiki/LAND
# sudo habu.land 172.16.0.10
............
Nota: Cada ponto (.) é um pacote enviado. Você pode especificar quantos pacotes enviar com a opção '-c'. O padrão é nunca parar. Além disso, você pode especificar a porta de destino com a opção '-p'.
Opções:
-c INTEGER Quantos pacotes enviar (padrão: infinito)
-p INTEGER Porta a usar (padrão: 135)
-i TEXT Interface a usar
-v Detalhado
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.nc [OPTIONS] HOST PORT
Uma espécie de substituto para netcat/ncat.
A execução emula a sensação dessas ferramentas populares.
Exemplo:
$ habu.nc --crlf www.portantier.com 80
Connected to 45.77.113.133 80
HEAD / HTTP/1.0
HTTP/1.0 301 Moved Permanently
Date: Thu, 26 Jul 2018 21:10:51 GMT
Server: OpenBSD httpd
Connection: close
Content-Type: text/html
Content-Length: 443
Location: https://www.portantier.com/
Opções:
--family [4|6|46] Família de Endereços IP
--ssl Ativar SSL
--crlf Usar CRLF para sequência de fim de linha
--protocol [tcp|udp] Protocolo da camada 4 a usar
--source-ip TEXT IP de origem a usar
--source-port INTEGER RANGE Porta de origem a usar
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.net.contest [OPTIONS]
Tenta conectar a vários serviços e verifica se consegue alcançá-los usando sua conexão de internet.
Exemplo:
$ habu.net.contest
DNS: True
FTP: True
SSH: True
HTTP: True
HTTPS: True
Opções:
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.net.interfaces [OPTIONS]
Mostra as interfaces de rede disponíveis no sistema.
Exemplo:
# habu.interfaces
# NAME MAC INET INET6
0 eth0 80:fa:5b:4b:f9:18 None None
1 lo 00:00:00:00:00:00 127.0.0.1 ::1
2 wlan0 f4:96:34:e5:ae:1b 192.168.0.6 None
3 vboxnet0 0a:00:27:00:00:00 192.168.56.1 fe80::800:27ff:fe00:0
Opções:
-j Saída no formato JSON
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.nmap.excluded [OPTIONS]
Imprime uma porta aleatória que não está presente no arquivo nmap-services, portanto não é escaneada automaticamente pelo nmap.
Útil para serviços como SSH ou RDP, que são continuamente escaneados em suas portas padrão.
Exemplo:
# habu.nmap.excluded
58567
Opções:
-l INTEGER RANGE Menor porta a considerar
-h INTEGER RANGE Maior porta a considerar
--help Mostrar esta mensagem e sair.
.. code-block::
Usage: habu.nmap.open [OPTIONS] SCANFILE
Lê um relatório nmap e imprime as portas abertas.
Imprime as portas que resultaram abertas ao ler a saída nmap gerada.
Você pode usá-lo para reutilizar rapidamente a lista de portas como entrada para outras ferramentas.
Suporta e detecta os 3 formatos de saída (nmap, gnmap e xml)
Exemplo:
# habu.nmap.open portantier.nmap
22,80,443
Opções:
-p [tcp|udp|sctp] O protocolo (padrão=tcp)
--help Mostrar esta mensagem e sair.
habu.nmap.ports ---------------Usage: habu.nmap.ports [OPÇÕES] ARQUIVO_DE_VARREDURA
Lê um relatório do nmap e imprime as portas testadas.
Imprime as portas que foram testadas lendo a saída do nmap gerada.
Pode ser usado para reutilizar rapidamente a lista de portas como entrada para outras ferramentas.
Suporta e detecta os 3 formatos de saída (nmap, gnmap e xml)
Exemplo:
21,22,23,80,443
Opções: -p [tcp|udp|sctp] O protocolo (padrão=tcp) --help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.protoscan [OPÇÕES] IP
Envia pacotes IP com diferentes conteúdos de campo de protocolo para
adivinhar quais protocolos de camada 4 estão disponíveis.
A saída mostra quais protocolos não geram uma resposta ICMP de
'protocolo inalcançável'.
Exemplo:
$ sudo python cmd_ipscan.py 45.77.113.133
1 icmp
2 igmp
4 ipencap
6 tcp
17 udp
41 ipv6
47 gre
50 esp
51 ah
58 ipv6_icmp
97 etherip
112 vrrp
115 l2tp
132 sctp
137 mpls_in_ip
Opções:
-i TEXT Interface a usar
-t INTEGER Tempo limite para cada sonda (padrão: 2 segundos)
--all Sondar todos os protocolos (padrão: definido em /etc/protocols)
-v Saída detalhada
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.server.ftp [OPÇÕES]
Servidor FTP falso básico, com o único propósito de roubar credenciais de
utilizador.
Suporta SSL/TLS.
Exemplo:
# sudo habu.server.ftp --ssl --ssl-cert /tmp/cert.pem --ssl-key /tmp/key.pem
Listening on port 21
Accepted connection from ('192.168.0.27', 56832)
Credentials collected from 192.168.0.27! fabian 123456
Opções:
-a TEXT Endereço para vincular (padrão: todos)
-p INTEGER Qual porta usar (padrão: 21)
--ssl Ativar SSL/TLS (padrão: Falso)
--ssl-cert TEXT Ficheiro de certificado SSL/TLS
--ssl-key TEXT Ficheiro de chave SSL/TLS
-v Detalhado
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.shodan [OPÇÕES] IP
Cliente simples da API Shodan.
Imprime o resultado JSON de uma consulta Shodan.
Exemplo:
$ habu.shodan 216.58.222.36
asn AS15169
isp Google
hostnames eze04s06-in-f4.1e100.net, gru09s17-in-f36.1e100.net
country_code US
region_code CA
city Mountain View
org Google
open_ports tcp/443, tcp/80
Opções:
--cache / --no-cache
-v Saída detalhada
--format [txt|csv|json|nmap] Formato de saída
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.shodan.query [OPÇÕES] CONSULTA
Cliente simples da API Shodan.
Imprime o resultado JSON de uma consulta Shodan.
Exemplo:
$ habu.shodan 8.8.8.8
{
"hostnames": [
"google-public-dns-a.google.com"
],
"country_code": "US",
"org": "Google",
"data": [
{
"isp": "Google",
"transport": "udp",
"data": "Recursion: enabled",
"asn": "AS15169",
"port": 53,
"hostnames": [
"google-public-dns-a.google.com"
]
}
],
"ports": [
53
]
}
Opções:
-c Desativar cache
-v Saída detalhada
-o FILENAME Ficheiro de saída (padrão: stdout)
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.tcp.flags [OPÇÕES] IP
Envia pacotes TCP com diferentes flags e informa quais respostas recebe.
Pode ser usado para analisar como diferentes implementações e configurações
da pilha TCP/IP respondem a pacotes com várias combinações de flags.
Exemplo:
# habu.tcp_flags www.portantier.com
S -> SA
FS -> SA
FA -> R
SA -> R
Por padrão, o comando envia todas as combinações possíveis de flags. Pode
especificar quais flags devem estar sempre presentes (reduzindo a quantidade
de combinações possíveis), com a opção '-f'.
Além disso, pode especificar quais flags deseja que estejam presentes nos
pacotes de resposta a mostrar, com a opção '-r'.
Com o próximo comando, vê todas as combinações possíveis que têm a flag
FIN (F) definida e que geram uma resposta contendo a flag RST (R).
Exemplo:
# habu.tcp_flags -f F -r R www.portantier.com
FPA -> R
FSPA -> R
FAU -> R
Opções:
-p INTEGER Porta a usar (padrão: 80)
-f TEXT Flags que devem ser sempre enviadas (padrão: fuzz com todas as flags)
-r TEXT Filtrar por flags de resposta (padrão: mostrar todas as respostas)
-v Detalhado
--first Parar na primeira resposta que corresponde
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.tcp.isn [OPÇÕES] IP
Cria conexões TCP e imprime os números de sequência iniciais TCP para cada
uma.
$ sudo habu.tcp.isn -c 5 www.portantier.com
1962287220
1800895007
589617930
3393793979
469428558
Nota: Pode obter uma representação gráfica (necessita do pacote matplotlib)
usando a opção '-g' para melhor entender a aleatoriedade.
Opções:
-p INTEGER Porta a usar (padrão: 80)
-c INTEGER Quantos pacotes enviar/receber (padrão: 5)
-i TEXT Interface a usar
-g Gráfico (requer matplotlib)
-v Saída detalhada
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.tcp.scan [OPÇÕES] IP
Scanner de portas TCP.
Imprime as portas que geraram uma resposta com a flag SYN ou (se mostrar
usar -a) todas as portas que geraram uma resposta.
É realmente básico comparado ao nmap, mas quem está a comparar?
Exemplo:
# habu.tcp.scan -p 22,23,80,443 -s 1 45.77.113.133
22 S -> SA
80 S -> SA
443 S -> SA
Opções:
-p TEXT Portas a usar (padrão: 80) exemplo: 20-23,80,135
-i TEXT Interface a usar
-f TEXT Flags a usar (padrão: S)
-s TEXT Tempo entre sondas (padrão: enviar todas juntas)
-t INTEGER Tempo limite para cada sonda (padrão: 2 segundos)
-a Mostrar todas as respostas (padrão: apenas contendo flag SYN)
-v Saída detalhada
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.tcp.synflood [OPÇÕES] IP
Lança muitas conexões TCP e mantém-nas abertas.
Alguns sistemas muito antigos podem sofrer uma negação de serviço com isto.
Referência: https://en.wikipedia.org/wiki/SYN_flood
Exemplo:
# sudo habu.tcp.synflood 172.16.0.10
.................
Cada ponto é um pacote enviado.
Pode usar as opções '-2' e '-3' para forjar os endereços de camada 2/3.
Se as usar, cada conexão será enviada a partir de um endereço aleatório
de camada 2 (MAC) e/ou camada 3 (IP).
Pode escolher o número de conexões a criar com a opção '-c'. O padrão é
nunca parar de criar conexões.
Nota: Se enviar os pacotes a partir do seu endereço IP real e quiser
manter as conexões meio-abertas, precisa configurar a firewall para não
enviar os pacotes RST.
Opções:
-i TEXT Qual interface usar (padrão: automático)
-c INTEGER Quantos pacotes enviar (padrão: infinito)
-p INTEGER Porta a usar (padrão: 135)
-2 Forjar endereço de camada2/MAC (padrão: Não)
-3 Forjar endereço de camada3/IP (padrão: Não)
-v Detalhado
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.traceroute [OPÇÕES] IP
TCP traceroute.
Identifica o caminho até um destino obtendo as mensagens de
ttl-zero-during-transit.
Nota: Na internet, pode ter vários caminhos válidos para um dispositivo.
Exemplo:
# habu.traceroute 45.77.113.133
IP / ICMP 192.168.0.1 > 192.168.0.5 time-exceeded ttl-zero-during-transit / IPerror / TCPerror
IP / ICMP 10.242.4.197 > 192.168.0.5 time-exceeded ttl-zero-during-transit / IPerror / TCPerror / Padding
IP / ICMP 200.32.127.98 > 192.168.0.5 time-exceeded ttl-zero-during-transit / IPerror / TCPerror / Padding
.
IP / ICMP 4.16.180.190 > 192.168.0.5 time-exceeded ttl-zero-during-transit / IPerror / TCPerror
.
IP / TCP 45.77.113.133:http > 192.168.0.5:ftp_data SA / Padding
Nota: É melhor usar uma porta que esteja aberta no sistema remoto.
Opções:
-p INTEGER Porta a usar (padrão: 80)
-i TEXT Interface a usar
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.upgrade [OPÇÕES]
Atualizar o habu (de https://github.com/fportantier/habu)
Opções:
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.usercheck [OPÇÕES] NOME_DE_UTILIZADOR
Verifica se o nome de utilizador fornecido existe em várias redes sociais
e outros sites populares.
$ habu.usercheck portantier
{
"aboutme": "https://about.me/portantier",
"disqus": "https://disqus.com/by/portantier/",
"github": "https://github.com/portantier/",
"ifttt": "https://ifttt.com/p/portantier",
"lastfm": "https://www.last.fm/user/portantier",
"medium": "https://medium.com/@portantier",
"pastebin": "https://pastebin.com/u/portantier",
"pinterest": "https://in.pinterest.com/portantier/",
"twitter": "https://twitter.com/portantier",
"vimeo": "https://vimeo.com/portantier"
}
Opções:
-c Desativar cache
-v Saída detalhada
-w Abrir cada URL válida num navegador web
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.version [OPÇÕES]
Opções:
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.vhosts [OPÇÕES] HOST
Usa o Bing para consultar os sites alojados no mesmo endereço IP.
$ habu.vhosts www.telefonica.com
www.telefonica.com -> 212.170.36.79
[
'www.telefonica.es',
'universitas.telefonica.com',
'www.telefonica.com',
]
Opções:
-c Desativar cache
-p INTEGER Contagem de páginas (Padrão: 10)
-f INTEGER Primeiro resultado a obter (Padrão: 1)
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.virustotal [OPÇÕES] INPUT
Envia um ficheiro para o VirusTotal https://www.virustotal.com/ e imprime
o relatório em formato JSON.
Nota: Antes de enviar um ficheiro, irá verificar se o ficheiro já foi
analisado anteriormente (enviando o sha256 do ficheiro). Se existir um
relatório, não será feita nenhuma submissão e verá o último relatório.
$ habu.virustotal meterpreter.exe
Verifying if hash already submitted: f4826b219aed3ffdaa23db26cfae611979bf215984fc71a1c12f6397900cb70d
Sending file for analysis
Waiting/retrieving the report...
{
"md5": "0ddb015b5328eb4d0cc2b87c39c49686",
"permalink": "https://www.virustotal.com/file/c9a2252b491641e15753a4d0c4bb30b1f9bd26ecff2c74f20a3c7890f3a1ea23/analysis/1526850717/",
"positives": 49,
"resource": "c9a2252b491641e15753a4d0c4bb30b1f9bd26ecff2c74f20a3c7890f3a1ea23",
"response_code": 1,
"scan_date": "2018-05-20 21:11:57",
"scan_id": "c9a2252b491641e15753a4d0c4bb30b1f9bd26ecff2c74f20a3c7890f3a1ea23-1526850717",
"scans": {
"ALYac": {
"detected": true,
"result": "Trojan.CryptZ.Gen",
"update": "20180520",
"version": "1.1.1.5"
},
... Os outros scanners ...
},
"sha1": "5fa33cab1729480dd023b08f7b91a945c16d0a9e",
"sha256": "c9a2252b491641e15753a4d0c4bb30b1f9bd26ecff2c74f20a3c7890f3a1ea23",
"total": 67,
"verbose_msg": "Scan finished, information embedded"
}
Opções:
-v Saída detalhada
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.web.report [OPÇÕES] [FICHEIRO_DE_ENTRADA]
Cria um relatório que inclui cabeçalhos HTTP de sites.
Opcionalmente, usa o Firefox ou Chromium para tirar uma captura de ecrã
dos sites.
O formato esperado é um URL por linha.
Cria um diretório chamado 'report' com o conteúdo dentro.
$ echo https://www.portantier.com | habu.web.report
Opções:
-v Saída detalhada
-s Tirar uma captura de ecrã para cada site
-b [firefox|chromium-browser] Navegador a usar para a captura de ecrã.
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.web.screenshot [OPÇÕES] URL
Usa o Firefox ou Chromium para tirar uma captura de ecrã do site.
$ habu.web.screenshot https://www.portantier.com
Opções:
-b [firefox|chromium-browser] Navegador a usar para a captura de ecrã.
-o TEXT Ficheiro de saída. (padrão: screenshot.png)
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.whois.domain [OPÇÕES] DOMÍNIO
Cliente whois simples para verificar nomes de domínio.
Exemplo:
$ habu.whois.domain google.com
registrar MarkMonitor, Inc.
whois_server whois.markmonitor.com
creation_date 1997-09-15 04:00:00
expiration_date 2028-09-14 04:00:00
name_servers ns1.google.com, ns2.google.com, ns3.google.com, ns4.google.com
emails [email protected], [email protected]
dnssec unsigned
org Google LLC
country US
state CA
Opções:
--json Imprimir a saída em formato JSON
--csv Imprimir a saída em formato CSV
--help Mostra esta mensagem e sai.
.. code-block::
Usage: habu.whois.ip [OPÇÕES] IP
Cliente whois simples para verificar endereços IP (IPv4 e IPv6).
Exemplo:
$ habu.whois.ip 8.8.4.4
asn 15169
asn_registry arin
asn_cidr 8.8.4.0/24
asn_country_code US
asn_description GOOGLE - Google LLC, US
asn_date 1992-12-01
Opções:
--json Imprimir a saída em formato JSON
--csv Imprimir a saída em formato CSV
--help Mostra esta mensagem e sai.
crypto.fernet <#habucryptofernet>_crypto.fernet.genkey <#habucryptofernetgenkey>_crypto.gppref <#habucryptogppref>_crypto.hasher <#habucryptohasher>_crypto.xor <#habucryptoxor>_data.enrich <#habudataenrich>_data.extract.domain <#habudataextractdomain>_data.extract.email <#habudataextractemail>_data.extract.fqdn <#habudataextractfqdn>_data.extract.ipv4 <#habudataextractipv4>_data.filter <#habudatafilter>_data.select <#habudataselect>_dhcp.discover <#habudhcpdiscover>_dhcp.starvation <#habudhcpstarvation>_dns.lookup.forward <#habudnslookupforward>_dns.lookup.reverse <#habudnslookupreverse>_eicar <#habueicar>_forkbomb <#habuforkbomb>_fqdn.finder <#habufqdnfinder>_gateway.find <#habugatewayfind>_host <#habuhost>_http.headers <#habuhttpheaders>_http.options <#habuhttpoptions>_http.tech <#habuhttptech>_icmp.ping <#habuicmpping>_ip.asn <#habuipasn>_ip.geolocation <#habuipgeolocation>_ip.internal <#habuipinternal>_ip.public <#habuippublic>_karma <#habukarma>_karma.bulk <#habukarmabulk>_land <#habuland>_nc <#habunc>_net.contest <#habunetcontest>_net.interfaces <#habunetinterfaces>_nmap.excluded <#habunmapexcluded>_nmap.open <#habunmapopen>_nmap.ports <#habunmapports>_protoscan <#habuprotoscan>_server.ftp <#habuserverftp>_shodan <#habushodan>_shodan.query <#habushodanquery>_tcp.flags <#habutcpflags>_tcp.isn <#habutcpisn>_tcp.scan <#habutcpscan>_tcp.synflood <#habutcpsynflood>_traceroute <#habutraceroute>_upgrade <#habuupgrade>_usercheck <#habuusercheck>_version <#habuversion>_vhosts <#habuvhosts>_virustotal <#habuvirustotal>_web.report <#habuwebreport>_web.screenshot <#habuwebscreenshot>_whois.domain <#habuwhoisdomain>_whois.ip <#habuwhoisip>_