Fierce
Fierce is a DNS reconnaissance tool for locating non-contiguous IP space.
Useful links:
- Domain Name System (DNS)
- Name Servers (NS)
- State of Authority Record (SOA)
- Zone Transfer
- Wildcard DNS Record
Overview
First, credit where credit is due, fierce was
originally written
by RSnake along with others at http://ha.ckers.org/. Then it was maintained by
mschwager until 2024, and this repository is a
slightly modernized version of that codebase.
The original description was very apt:
Fierce is a semi-lightweight scanner that helps locate non-contiguous IP space and hostnames against specified domains. It's really meant as a pre-cursor to nmap, unicornscan, nessus, nikto, etc, since all of those require that you already know what IP space you are looking for. This does not perform exploitation and does not scan the whole internet indiscriminately. It is meant specifically to locate likely targets both inside and outside a corporate network. Because it uses DNS primarily you will often find mis-configured networks that leak internal address space. That's especially useful in targeted malware.
Installing
python -m pip install fierce3
fierce3 -h
OR
git clone https://github.com/meese-enterprises/fierce3.git
cd fierce3
poetry install
python3 fierce3/fierce3.py -h
Using
Let's start with something basic:
fierce3 --domain google.com --subdomains accounts admin ads
Traverse IPs near discovered domains to search for contiguous blocks with the
--traverse flag:
fierce3 --domain facebook.com --subdomains admin --traverse 10
Limit nearby IP traversal to certain domains with the --search flag:
fierce3 --domain facebook.com --subdomains admin --search fb.com fb.net
Attempt an HTTP connection on domains discovered with the --connect flag:
fierce3 --domain stackoverflow.com --subdomains mail --connect
Exchange speed for breadth with the --wide flag, which looks for nearby
domains on all IPs of the /24
of a discovered domain:
fierce3 --domain facebook.com --wide
Zone transfers are rare these days, but they give us the keys to the DNS castle. zonetransfer.me is a very useful service for testing for and learning about zone transfers:
fierce3 --domain zonetransfer.me
To save the results to a file for later use we can simply redirect output:
fierce3 --domain zonetransfer.me > output.txt
Internal networks will often have large blocks of contiguous IP space assigned. We can scan those as well:
fierce3 --dns-servers 10.0.0.1 --range 10.0.0.0/24
Check out --help for further information:
fierce3 --help
Developing
First, create a virtual environment and install poetry and development packages:
git clone https://github.com/meese-enterprises/fierce3.git
python3 -m venv venv
source venv/bin/activate
poetry install --with dev
Testing
poetry run pytest
Linting
poetry run flake8
Coverage
poetry run pytest --cov
Release files for fierce3 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fierce3-1.0.0.tar.gz | 111.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fierce3-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 222.2 kB
Release files / fierce3-1.0.0.tar.gz
| Download URL | fierce3-1.0.0.tar.gz |
|---|---|
| Size | 111.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e876d8ab4f172fe858c588db9a6ed53687594b397f491eb955592bb7b492f4ad
|
|
BLAKE2b-256 checksum How to use checksums |
9a47caee18e5a203c5124b2c87bf7c7b8d280c7b8552bbcf3304acac25f80bc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.7 Linux/6.14.0-33-generic
|
Release files / fierce3-1.0.0-py3-none-any.whl
| Download URL | fierce3-1.0.0-py3-none-any.whl |
|---|---|
| Size | 111.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a8fb97a175e6d4f7375ab8e2eb7d347c45fa29331ecf4ab2078f8ab98aa50c20
|
|
BLAKE2b-256 checksum How to use checksums |
50d0e766f109d9266fb349d7e10c3150234766d62df6d24a590b209308eeb96c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.7 Linux/6.14.0-33-generic
|