source: fierce2/branch/README @ 102

Revision 102, 7.9 KB checked in by jabra, 4 years ago (diff)

removed ref to connect

Line 
1******
2README
3******
4
5* What is new in 2.0 ?
6* Description
7
8
9*******************
10What is new in 2.0?
11*******************
12
13Fierce 2.0 is a complete rewrite of the Fierce code using a modular method of
14development. Therefore, many of the pieces can be used as there own entity.
15This will allow people to quickly create scripts using one or more features of
16Fierce.
17
18Obviously, Fierce 2.0 will include the Fierce script which uses the new
19modules. This will allow the code to be more readable and this will enable
20a faster development and greater flexibility.
21
22Another major improvement in Fierce 2.0, is the testing framework. Each module
23will have an included set of tests. This will us to verify things are working
24the way they should.
25
26
27
28***********
29Description
30***********
31
32Fierce domain scan was born out of personal frustration after performing a web
33application security audit. It is traditionally very difficult to discover
34large swaths of a corporate network that is non-contiguous. It's terribly easy
35to run a scanner against an IP range, but if the IP ranges are nowhere near one
36another you can miss huge chunks of networks.
37
38First what Fierce is not. Fierce is not an IP scanner, it is not a DDoS tool,
39it is not designed to scan the whole internet or perform any un-targeted
40attacks. It is meant specifically to locate likely targets both inside and
41outside a corporate network. Only those targets are listed (unless the
42-nopattern switch is used). No exploitation is performed (unless you do
43something intentionally malicious with the -connect switch). Fierce is a
44reconnaissance tool. Fierce is a Perl script that quickly scans domains
45(usually in just a few minutes, assuming no network lag) using several tactics.
46
47First it queries your DNS for the DNS servers of the target. It then switches
48to using the target's DNS server (you can use a different one if you want using
49the -dnsserver switch but this can cause problems if the server you use won't
50tell you information about other people's sites and of course you won't find
51much relevant internal address space). Fierce then attempts to dump the SOA
52records for the domain in the very slim hope that the DNS server that your
53target uses may be misconfigured. Once that fails (because it almost always
54will) it attempts to "guess" names that are common amongst a lot of different
55companies. Don't ask me where I got the list, it's just a list of names that id
56and I have seen all over the place. I thought about adding a dictionary to
57this, but I think that would take a lot longer, and given that very few of the
58words are dictionary words I don't think this would add a lot of value.
59
60Next, if it finds anything on any IP address it will scan up and down a set
61amount (default 5 but you can expand it with -traverse or increase it to the
62entire subnet with -wide) looking for anything else with the same domain name
63in it using reverse lookups. If it finds anything on any of those it will
64recursively scan until it doesn't find any more. In this way it ends up looping
65a lot, and the bigger the domain is the more you get back. The reason Fierce
66automatically switches to using the target's DNS server is so that it can probe
67the Intranet (RFC1918) of the target, assuming the target uses a single DNS
68server for both their Intranet and external sites.
69
70I also added a random call to something that should fail to test for wildcard
71DNS. If it's found, the wildcard is discarded to reduce erroneous results. That
72doesn't speed up the scan because it still needs to check to see if the test
73resolves back to IP address that the wildcard is pointing to. However it does
74reduce false positives.
75
76Also, I've added a "search" option that allows you to find other non-related
77domain names. For example, let's say my target's domain is widget.com but I
78know they have email addresses like soandso@widgetcompany.com and own another
79company called nutsandbolts.com I can add search queries. This won't scan for
80those domains, but if those names pop up, it won't ignore them. Fierce will
81report on anything inside the search pattern as long as it matches. If you want
82everything I guess you could put a,b,c,...,x,y,z but I'll probably make
83something in the future to allow for scanning/reporting the entire C block once
84anything is found in it that matches the DNS string. Here's the syntax:
85
86perl fierce.pl -dns widget.com -search widgetcompany,nutsandbolts
87
88I also realized it can be a little bad about finding everything in a class C if
89the target used non-contiguous blocks within the class C. To deal with that I
90built in a function to allow a scan (of only C blocks). This is also really
91useful for scanning intranets if the DNS is poorly configured. I might expand
92on this later.
93
94perl fierce.pl -range 10.10.10.0-255 -dnsserver ns1.example.com
95
96As an alternative, you can use the -wide switch which does a wide path of
97reverse lookups after finding any C names that match your query in the C block.
98This provides a lot more information but is a lot more noisy.
99
100perl fierce.pl -dns example.com -wide -file output.txt
101
102Fierce also has wordlist support so that you can supply your own dictionary
103using the -wordlist keyword. Since the brute force does rely on matching at
104least a few internal targets, this could be helpful if you know that the naming
105convention has to do with a certain non-obvious naming convention or uses
106another language, etc.
107
108perl fierce.pl -dns example.com -wordlist dictionary.txt -file output.txt
109
110Not convinced? Prior to running the scan I had never been to either mail.ru or
111rambler.ru (a few of the top Alexa sites in Russia). Since I don't read
112Russian, performing an audit against them is far more difficult. Here's some
113sample output from the two. In the first example you can see that mail.ru has a
114non-contiguous address for it's mobile.mail.ru than it does for the rest of the
115site. That would have been very difficult to locate with any other scanner. In
116the rambler.ru example you can see the RFC1918 space 10.* pop up:
117
118    * mail.ru - 418 entries and 303 hostnames found.
119    * rambler.ru - 472 entries and 458 hostnames found.
120
121Trust me, we've found far more interesting sites than these two in our tests,
122but I don't want to disparage any companies for their mistakes. I'm sure you
123can think of a few companies to test this against. The results can be pretty
124amazing. If you don't get many results, that could be one of three things, 1)
125you aren't scanning their corporate domain, you are only scanning their
126external domain which they only have one or two machines on 2) it's a very
127small company or 3) you typo'd the domain name (I haven't built any checks to
128make sure the domain you entered is valid).
129
130Requirements: This is a Perl program requiring the Perl interpreter with the
131modules Net::DNS and Net::hostent. You can install modules using CPAN:
132
133    perl -MCPAN -e 'install Net::DNS'
134    perl -MCPAN -e 'install Net::hostent'
135
136Windows users: You can use Fierce under Windows if you use Cygwin with Perl and
137the above two modules installed. I have not tested this using ActivePerl in
138Windows, so I would recommend Cygwin until ActivePerl can be thoroughly tested.
139I am/was working on a win32 version of Fierce, but have put the project on
140hold. If anyone is interested in picking up where I left off, drop me a line.
141
142Version: Fierce is currently at version 2.0 - 12/20/2007
143
144Download: fierce.pl
145
146Download: hosts.txt
147
148(Thanks to Robert E Lee for the help with this and to Michael Thumann's
149DNSDigger wordlist).
150
151Getting started: perl fierce.pl -help
152
153This may some bugs in it. Also this can be a noisy scanner, but in the tests
154I've performed it's exceptionally effective at finding non-contiguous IP blocks
155and new attack points. This should be considered a pre-cursor to nmap,
156unicornscan or nessus as it gives you enough information to begin a much more
157thorough scan with one of those other tools. Also, it can point out DNS entries
158for hosts that are no longer up or have not yet been put into production.
159Please use Fierce with care and at your own risk.
160
Note: See TracBrowser for help on using the repository browser.