DNSTWIST(1)
π NAME π
okay bestie, so dnstwist is literally a domain name permutation engine β that's the whole vibe. (also hi, this is the DNSTWIST(1) page from the User Commands manual, in case you were wondering who let me in here π)
β¨ SYNOPSIS β¨
dnstwist [OPTION...] DOMAIN
π¦ DESCRIPTION π¦
so the whole point?? finding similar-looking domain names that bad actors could use to come for you. it's giving typosquatters, phishing attacks, fraud, brand impersonation β the full toxic ex energy of the internet π
π COMMAND-LINE OPTIONS π
one bullet per flag, no skips, no skips, periodt:
-a,--allβ print all the DNS records instead of just the first ones. greedy? yes. correct? also yes.-b,--bannersβ go figure out the HTTP and SMTP service banners. sniff sniff π-d,--dictionaryFILE β generate extra domains using a dictionary you read from FILE.-f,--formatFORMAT β pick your output format. supported values are:cli(the default, bestie),csv,list,json.--fuzzersLIST β only use the selected fuzzing algorithms (separate them with commas, like a lil list).-g,--geoipβ do a lookup for GeoIP location. where in the world π--lsh[LSH] β evaluate web page similarity with the LSH algorithm:ssdeep(the default) ortlsh.--lsh-urlURL β override the URL used to fetch the original web page from.-h,--helpβ display the help message and dip out. bye π-m,--mxcheckβ check whether the MX host can be used to intercept e-mails.-o,--outputFILE β save the output to FILE.-r,--registeredβ show only registered domain names.-u,--unregisteredβ show only unregistered domain names.-p,--phashβ render the web pages and compare their perceptual hashes to figure out visual similarity ποΈβ¨--phash-urlURL β override the URL used to render the original web page from.--screenshotsDIR β save web page screenshots into DIR. πΈ-t,--threadsNUM β start NUM threads. go fast, bestie.-w,--whoisβ look up the WHOIS database for creation date and registrar π΅οΈββοΈ--nameserversLIST β the DNS or DNS-over-HTTPS servers to query (comma-separated LIST).--tldFILE β generate extra domains by swapping the TLD as read from FILE.--useragentSTRING β set the User-Agent STRING (default:Mozilla/5.0 (platform arch) dnstwist/version).
πΈ NOTES πΈ
DNS fuzzing is an automated workflow for discovering potentially malicious domain names. iykyk.
the tool runs your provided domain name through its fuzzing algorithms and generates a list of potential phishing domains along with DNS records. usually thousands of domain permutations get generated β especially for longer input domains. when that happens, it may be practical to display only the registered (resolvable) ones using the --registered argument. fr fr.
heads up bestie: make sure your local DNS server can handle thousands of requests within a short period of time. otherwise, you can specify an external DNS or DNS-over-HTTPS server with the --nameservers argument. don't crash your resolver, it's not cute π
π§ Fuzzy hashing π§
manually checking every single domain name to see if it's serving a phishing site might be time-consuming. to address this, dnstwist makes use of so-called fuzzy hashes (locality-sensitive hash, LSH) and perceptual hashes (pHash). fuzzy hashing is a concept that involves the ability to compare two inputs (HTML code) and determine a fundamental level of similarity, while perceptual hash is a fingerprint derived from visual features of an image (web browser screenshot). the level of similarity is expressed as a percentage. math queen behavior π
keep in mind it's rather unlikely to get a 100% match for a dynamically generated web page. however, each notification is a strong indicator and should be inspected carefully regardless of the score. no skipping the vibes check just because the number is low.
π Dictionaries π
if the domain permutations generated by the fuzzing algorithms are insufficient, please use the --dictionary option with a file to generate more domain variants. and if you need to check whether domains with different TLDs exist, you can use the --tld argument. more options = more chaos = more coverage π
π Coverage π
along with the length of the domain, the number of variants generated by the algorithms increases considerably β and therefore so do the time and resources needed to verify them. it's mathematically impossible to check all domain permutations, especially for longer input domains which would require millions of DNS lookups. for this reason, this tool generates and checks domains very close to the original one. theoretically, these are the most attractive domains from the attacker's point of view. however, be aware that the imagination of the aggressors is unlimited. they will think of things you did not. scary but true π
Unicode tables consist of thousands of characters, with many of them visually similar to each other. however, despite the fact certain characters are encodable using punycode, most TLD authorities will reject them during the domain registration process. in general, TLD authorities disallow mixing of characters coming from different Unicode scripts, or maintain their own sets of acceptable characters. with that being said, the homoglyph fuzzer was built on top of a carefully researched range of Unicode characters (homoglyphs) to ensure that generated domains can actually be registered in practice. science, but make it shady β¨
π AUTHOR π
Marcin Ulikowski <marcin@ulikowski.pl>
okay that's the whole page bestie, go forth and typosquat-hunt π«Ά this was the User Commands manual, December 2022 edition β and yes the date is giving vintage but she still eats. mwah π β
π¦ where this page comes from
- debian trixie: dnstwist 0~20250130-1 Β· Apache-2.0
- fedora 43: dnstwist 20250130-2.fc43 Β· Apache-2.0
- fedora 44: dnstwist 20250130-4.fc44 Β· Apache-2.0
- ubuntu noble: dnstwist 0~20240116-1 Β· Apache-2.0
- ubuntu questing: dnstwist 0~20250130-1
- ubuntu resolute: dnstwist 0~20250130-1build1 Β· Apache-2.0
- ubuntu stonking: dnstwist 0~20250130-1build1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms