Note:
The SSL/TLS certificate will be saved into a file named
<domain-name>:<port>.crt
.
The ronin-asn
command can query the ASN for a given IP:
$ ronin asn -I 4.2.2.1
4.0.0.0/9 AS3356 (US) LEVEL3
ASNs can also be searched by number, country-code, name:
ronin asn -n AS3356
ronin asn -C CN
ronin asn -N LEVEL3
The ronin-asn
command can also update it’s internal database of ASNs:
ronin asn --update
The ronin ip
command can query the system’s external/public IP address:
ronin ip --public
The ronin ip
command can also convert an IP address into decimal format:
$ ronin ip --decimal 127.0.0.1
2130706433
The ronin ip
command can also be passed a text file of IP addresses (one
per-line) and convert them into http://
URIs:
ronin ip --file targets.txt --http
Supported formatting options:
-r
, --reverse
- prints the IP address in reverse name format.-X
, --hex
- converts the IP address to hexadecimal format.-D
, --decimal
- converts the IP address to decimal format.-B
, --binary
- converts the IP address to binary format.-C
, --cidr NETMASK
- converts the IP address into a CIDR range.-H
, --host
- converts the IP address to a host name.-U
, --uri
- converts the IP address into a URI.--http
- converts the IP address into a http://
URI.--https
- converts the IP address into a https://
URI.The ronin iprange
can enumerate over every IP address in the IP CIDR range:
$ ronin iprange 10.1.0.0/15
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
...
The ronin iprange
command also supports nmap-style glob ranges:
$ ronin iprange 10.1-3.0.*
10.1.0.1
10.1.0.2
10.1.0.3
10.1.0.4
10.1.0.5
10.1.0.6
10.1.0.7
10.1.0.8
10.1.0.9
10.1.0.10
...
The ronin iprange
can enumerate over every IP address between two IP
addresses:
$ ronin iprange --start 10.0.0.1 --stop 10.0.3.33
10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
10.0.0.10
The ronin netcat
command is very similar to the ncat
or nc
commands,
but written in Ruby and with more consistent options.
You can use ronin netcat
to connect to a remote port.
ronin netcat -v example.com 80
Listen on a local TCP port:
ronin netcat -v -l 1337
Connect to a remote SSL/TLS service:
ronin netcat -v --ssl example.com 443
Connect to a remote UDP service:
ronin netcat -v -u example.com 1337
Listen on a local UDP port:
ronin netcat -v -u -l 1337
Opens a UNIX socket:
ronin netcat -v --unix /path/to/unix.socket
The --hexdump
option will hexdump all data received from a socket:
$ ronin netcat --hexdump example.com 80
GET / HTTP/1.1
Host: example.com
User-Agent: Ruby
00000000 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d |HTTP/1.1 200 OK.|
00000010 0a 41 67 65 3a 20 32 35 30 38 30 36 0d 0a 43 61 |.Age: 250806..Ca|
00000020 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78 |che-Control: max|
00000030 2d 61 67 65 3d 36 30 34 38 30 30 0d 0a 43 6f 6e |-age=604800..Con|
00000040 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f |tent-Type: text/|
00000050 68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54 |html; charset=UT|
...
The ronin dns
command allows querying DNS records:
ronin dns -t TXT github.com
The ronin dns
command can also query multiple records read from a text file:
ronin dns -t TXT -f targets.txt
The ronin host
command allows parsing and manipulating host names.
The --enum-tlds
option will enumerate over every TLD of the host name.
The --registered
option will then filter the host names based on which have
any DNS records.
$ ronin host --enum-tlds --registered github.com
github.ac
github.actor
github.ae
github.africa
github.agency
github.ai
...
The --enum-suffix
option is similar to --enum-tlds
, but enumerates over
every public suffix of the host name.
$ ronin host --enum-suffix --registered github.com
example.com.ag
example.ai
example.al
example.am
example.com.ar
example.at
example.co.at
example.or.at
example.com.au
example.be
example.com.bh
...
The --enum-subdomains
option will change the sub-domain part of the host name
using a wordlist file.
$ ronin host --enum-subdomains subdomains.txt --has-addresses google.com
www.google.com
mail.google.com
smtp.google.com
ns1.google.com
ns2.google.com
m.google.com
ns.google.com
blog.google.com
admin.google.com
news.google.com
vpn.google.com
ns3.google.com
...
The ronin typosquat
command by default will enumerate every typo variation of
a domain name:
$ ronin typosquat microsoft.com
microosoft.com
microsooft.com
microssoft.com
The --registered
option will filter the typosquat domains by which ones have
DNS records.
ronin typosquat --registered microsoft.com
The --registered
option will filter the typosquat domains by which ones have
IP addresses.
ronin typosquat --has-addresses microsoft.com
The --registered
option will filter the typosquat domains by which ones
do not have any DNS records.
ronin typosquat --unregistered microsoft.com
The ronin email-addr
command allows parsing and manipulating email addresses.
For example, the ronin email-addr
can deobfuscate an obfuscated email address:
$ ronin email-addr --deobfuscate "john [dot] smith [at] example [dot] com"
john.smith@example.com
The ronin email-addr
command can also enumerate over every obfuscation of an
email address:
$ ronin email-addr --enum-obfuscations john.smith@example.com
john.smith @ example.com
john.smith AT example.com
john.smith at example.com
john.smith[AT]example.com
john.smith[at]example.com
...
The ronin email-addr
command also supports a --file
option for reading
email addresses from a file. For example, if you wanted to map a list of email
addresses to their domains:
ronin email-addr --file emails.txt --domain
The ronin cert-dump
command will request the SSL/TLS certificate of a website
and pretty print it’s information.
$ ronin cert-dump https://example.com
Serial: 16115816404043435608139631424403370993
Version: 2
Not Before: 2023-01-13 00:00:00 UTC
Not After: 2024-02-13 23:59:59 UTC
Public Key:
Type: RSA
Public-Key: (2048 bit)
Modulus:
00:c2:80:77:89:59:b8:45:6f:ba:4a:d9:11:fa:7b:
ad:c7:57:d0:7a:fb:b6:fa:dd:05:bb:a2:81:71:bb:
e1:7f:21:d2:5f:2e:f0:d2:72:4e:75:34:f8:8d:62:
e3:4a:da:51:90:d4:01:3d:9c:0c:c0:71:f7:e6:2f:
b6:d6:07:67:26:d0:de:ff:17:ce:f0:85:fd:31:c1:
66:ca:87:65:05:47:2a:5f:c0:ab:b8:8c:c3:bf:d0:
17:7f:63:a3:5c:f0:46:fb:86:aa:fb:4d:d7:2a:5e:
7f:9a:e0:13:97:7d:be:fb:7d:35:57:0d:5d:5e:81:
98:35:ea:16:42:a2:d3:b0:74:f7:59:2d:ed:38:e7:
fe:7a:1b:b3:36:e6:7e:ae:3f:9e:a6:16:83:de:53:
01:4e:81:00:ae:bb:42:f5:1f:75:29:34:cd:e9:84:
80:38:ae:3c:37:14:c0:f0:27:ce:30:52:b9:8a:dc:
5f:22:a0:79:f8:4f:4e:49:04:e2:75:7c:aa:2f:2a:
1e:03:ec:71:4c:a3:2a:61:fc:6f:ca:91:1e:93:5a:
2e:78:08:58:f6:ee:bb:34:20:5d:9a:e6:af:c6:d7:
f2:bf:0a:7b:fa:8e:92:77:e3:6c:7b:0c:40:86:64:
4a:15:ec:70:d7:72:8e:63:30:e1:0b:ef:5a:30:97:
2e:25
Exponent: 65537 (0x10001)
Subject:
Common Name: www.example.org
Organization: Internet Corporation for Assigned Names and Numbers
Locality: Los Angeles
State: California
Country: US
Alt Names:
www.example.org
example.net
example.edu
example.com
example.org
www.example.com
www.example.edu
www.example.net
Issuer:
Common Name: DigiCert TLS RSA SHA256 2020 CA1
Organization: DigiCert Inc
Country: US
The ronin cert-dump
command also accepts host:port
pairs and files.
ronin cert-dump example.com:443
ronin cert-dump cert.pem
The ronin cert-grab
command will download the SSL/TLS certificate of a SSL/TLS
service or a website:
ronin cert-grab github.com:443
ronin cert-grab https://github.com
The ronin cert-gen
command allows for quickly generating SSL/TLS certificates.
By default it will generate a self-signed certificate.
ronin cert-gen -c test.com -O "Test Co" -U "Test Dept" \
-L "Test City" -S NY -C US
The ronin http
command allows for quickly performing HTTP requests, but with
some additional useful features. By default ronin http
will perform an HTTP
GET
request and print syntax highlighted output:
ronin http https://example.com/
The --post
option will perform an HTTP POST
request and the --header
option will add additional raw headers to the request:
ronin http --post --header "Authorization: ..." https://foo.bar/
The --user-agent
option allows quickly changing the User-Agent
string to a
known common value:
ronin http --post --user-agent chrome-android https://foo.bar/
The --user-agent-string
option allows setting a custom User-Agent
string
value:
ronin http --post --user-agent-string "..." https://foo.bar/
The --shell
option will spawn an interactive shell with commands for sending
HTTP requests to the given website:
$ ronin http --shell https://example.com/
https://example.com/> help
help [COMMAND] Prints the list of commands or additional help
get PATH[?QUERY] [BODY] Performs a GET request
head PATH[?QUERY] Performs a HEAD request
patch PATH[?QUERY] [BODY] Performs a PATCH request
post PATH[?QUERY] [BODY] Performs a POST request
put PATH [BODY] Performs a PUT request
copy PATH DEST Performs a COPY request
delete PATH[?QUERY] Performs a DELETE request
lock PATH[?QUERY] Performs a LOCK request
options PATH[?QUERY] Performs a OPTIONS request
mkcol PATH[?QUERY] Performs a MKCOL request
move PATH[?QUERY] DEST Performs a MOVE request
propfind PATH[?QUERY] Performs a PROPFIND request
proppatch PATH[?QUERY] Performs a PROPPATCH request
trace PATH[?QUERY] Performs a TRACE request
unlock PATH[?QUERY] Performs a UNLOCK request
cd PATH Changes the base URL path
headers [{set | unset} NAME [VALUE]] Manages the request headers
The ronin url
command provides options for parsing and extracting data from
URLs, such as --query-param
option which will extract the value of the given
query parameter:
ronin url --file urls.txt --query-param id
The ronin url
also provides the --status
option, which will perform an HTTP
request for the URL and return the HTTP status for each URL:
ronin url --file urls.txt --status