原理

简单来说就是你拿到你想钓鱼的蓝方的域名去利用他快速生成高相似度的钓鱼域名去注册可用的来伪装去骗其蓝方公司安全意识不强的员工来达到你的钓鱼目的。
其跟当初以太坊钓鱼攻击是一个性质
b72b2a728ca1e6e66881594111e17a9.jpg
image.png
76356ea968695c9307e9855eb9e0300.png
f840afb7e35a5b944cdf1efad635b2c.png
与目标域名只在u下面多了一个点而已,而且价格在60元左右,可以承担起一个对抗的成本

编写

其中工具原理原本在ditto里面,不过它探测域名是否已经购买,在国内可能不好用,反正我没有成功
故把这个功能提取出来

  1. package main
  2. import (
  3. "fmt"
  4. "golang.org/x/net/idna"
  5. "os"
  6. )
  7. var (
  8. dictionary = map[rune][]string{
  9. 'a': {"á", "à", "â", "ǎ", "ă", "ã", "ả", "ȧ", "ạ", "ä", "å", "ḁ", "ā", "ą", "ᶏ", "ⱥ", "ȁ", "ấ", "ầ", "ẫ", "ẩ", "ậ", "ắ", "ằ", "ẵ", "ẳ", "ặ", "ǻ", "ǡ", "ǟ", "ȁ", "ȃ", "ɑ"},
  10. 'b': {"ḃ", "ḅ", "ḇ", "ƀ", "ɓ", "ƃ", "ᵬ", "ᶀ", "ʙ", "B", "b"},
  11. 'c': {"Ć", "ć", "Ĉ", "ĉ", "Č", "č", "Ċ", "ċ", "c̄", "Ç", "ç", "Ḉ", "ḉ", "Ȼ", "ȼ", "Ƈ", "ƈ", "ɕ", "ᴄ", "C", "c"},
  12. 'd': {"ď", "ḋ", "ḑ", "ḍ", "ḓ", "ḏ", "đ", "Ð", "ð", "̦d̦", "ɖ", "ɗ", "ᵭ", "ᶁ", "ᶑ", "ȡ", "ᴅ", "d"},
  13. 'e': {"é", "è", "ê", "ḙ", "ě", "ĕ", "ẽ", "ḛ", "ẻ", "ė", "ë", "ē", "ȩ", "ę", "ᶒ", "ȅ", "ế", "ề", "ễ", "ể", "ḝ", "ḗ", "ḕ", "ȇ", "ẹ", "ệ", "ⱸ", "ᴇ", "e"},
  14. 'f': {"Ḟ", "ḟ", "Ƒ", "ƒ", "ᵮ", "ᶂ", "ꜰ", "F", "f"},
  15. 'g': {"ǵ", "ğ", "ĝ", "ǧ", "ġ", "ģ", "ḡ", "ǥ", "ᶃ", "g"},
  16. 'h': {"ĥ", "ȟ", "ḧ", "ḣ", "ḩ", "ḥ", "ḫ", "̱ẖ", "ħ", "ⱨ", "ɦ", "h"},
  17. 'i': {"Í", "í", "Ì", "ì", "Ĭ", "ĭ", "Î", "î", "Ǐ", "ǐ", "Ï", "ï", "Ḯ", "ḯ", "Ĩ", "ĩ", "Į", "į", "Ī", "ī", "Ỉ", "ỉ", "Ȉ", "ȉ", "Ȋ", "ȋ", "Ị", "ị", "Ḭ", "ḭ", "Ɨ", "ɨ", "ᵻ", "ᶖ", "İ", "ı", "ɪ", "I", "i"},
  18. 'j': {"Ĵ", "ĵ", "ɉ", "̌ǰ", "ȷ", "ʝ", "ɟ", "ʄ", "ᴊ", "J", "j", "I"},
  19. 'k': {"Ḱ", "ḱ", "Ǩ", "ǩ", "Ķ", "ķ", "Ḳ", "ḳ", "Ḵ", "ḵ", "Ƙ", "ƙ", "Ⱪ", "ⱪ", "ᶄ", "ᶄ", "Ꝁ", "ꝁ", "ᴋ", "K", "k"},
  20. 'l': {"Ĺ", "ĺ", "Ľ", "ľ", "Ļ", "ļ", "Ḷ", "ḷ", "Ḹ", "ḹ", "Ḽ", "ḽ", "Ḻ", "ḻ", "Ł", "ł", "Ŀ", "ŀ", "Ƚ", "ƚ", "Ⱡ", "ⱡ", "Ɫ", "ɫ", "ɬ", "ᶅ", "ɭ", "ȴ", "ʟ", "L", "l"},
  21. 'm': {"Ḿ", "ḿ", "ṁ", "Ṃ", "ṃ", "ᵯ", "ᶆ", "Ɱ", "ɱ", "ᴍ", "M", "m"},
  22. 'n': {"Ń", "ń", "Ǹ", "ǹ", "Ň", "ň", "Ñ", "ñ", "Ṅ", "ṅ", "Ņ", "ņ", "Ṇ", "ṇ", "Ṋ", "ṋ", "Ṉ", "ṉ", "̈n̈", "Ɲ", "ɲ", "Ƞ", "ƞ", "ᵰ", "ᶇ", "ɳ", "ȵ", "ɴ", "N", "n", "Ŋ", "ŋ"},
  23. 'o': {"Ó", "ó", "Ò", "ò", "Ŏ", "ŏ", "Ô", "ô", "Ố", "ố", "Ồ", "ồ", "Ỗ", "ỗ", "Ổ", "ổ", "Ǒ", "ǒ", "Ö", "ö", "Ȫ", "ȫ", "Ő", "ő", "Õ", "õ", "Ṍ", "ṍ", "Ṏ", "ṏ", "Ȭ", "ȭ", "Ȯ", "ȯ", "Ȱ", "ȱ", "Ø", "ø", "Ǿ", "ǿ", "Ǫ", "ǫ", "Ǭ", "ǭ", "Ō", "ō", "Ṓ", "ṓ", "Ṑ", "ṑ", "Ỏ", "ỏ", "Ȍ", "ȍ", "Ȏ", "ȏ", "Ơ", "ơ", "Ớ", "ớ", "Ờ", "ờ", "Ỡ", "ỡ", "Ở", "ở", "Ợ", "ợ", "Ọ", "ọ", "Ộ", "ộ", "Ɵ", "ɵ", "ⱺ", "ᴏ", "O", "o"},
  24. 'p': {"Ṕ", "ṕ", "Ṗ", "ṗ", "Ᵽ", "ᵽ", "Ƥ", "ƥ", "̃p", "̃ᵱ", "ᶈ", "ᴘ", "P", "p", "ȹ"},
  25. 'q': {"Ɋ", "ɋ", "ʠ", "Q", "q", "ȹ"},
  26. 'r': {"Ŕ", "ŕ", "Ř", "ř", "Ṙ", "ṙ", "Ŗ", "ŗ", "Ȑ", "ȑ", "Ȓ", "ȓ", "Ṛ", "ṛ", "Ṝ", "ṝ", "Ṟ", "ṟ", "Ɍ", "ɍ", "Ɽ", "ɽ", "ᵲ", "ᶉ", "ɼ", "ɾ", "ᵳ", "ʀ", "R", "r"},
  27. 's': {"ẞ", "ß", "Ś", "ś", "Ṥ", "ṥ", "Ŝ", "ŝ", "Š", "š", "Ṧ", "ṧ", "Ṡ", "ṡ", "ẛ", "Ş", "ş", "Ṣ", "ṣ", "Ṩ", "ṩ", "Ș", "ș", "̩s̩", "ᵴ", "ᶊ", "ʂ", "ȿ", "ꜱ", "S", "s"},
  28. 't': {"Ť", "ť", "Ṫ", "ṫ", "Ţ", "ţ", "Ṭ", "ṭ", "Ț", "ț", "Ṱ", "ṱ", "Ṯ", "ṯ", "Ŧ", "ŧ", "Ⱦ", "ⱦ", "Ƭ", "ƭ", "Ʈ", "ʈ", "̈ẗ", "ᵵ", "ƫ", "ȶ", "t"},
  29. 'u': {"Ú", "ú", "Ù", "ù", "Ŭ", "ŭ", "Û", "û", "Ǔ", "ǔ", "Ů", "ů", "Ü", "ü", "Ǘ", "ǘ", "Ǜ", "ǜ", "Ǚ", "ǚ", "Ǖ", "ǖ", "Ű", "ű", "Ũ", "ũ", "Ṹ", "ṹ", "Ų", "ų", "Ū", "ū", "Ṻ", "ṻ", "Ủ", "ủ", "Ȕ", "ȕ", "Ȗ", "ȗ", "Ư", "ư", "Ứ", "ứ", "Ừ", "ừ", "Ữ", "ữ", "Ử", "ử", "Ự", "ự", "Ụ", "ụ", "Ṳ", "ṳ", "Ṷ", "ṷ", "Ṵ", "ṵ", "Ʉ", "ʉ", "ᵾ", "ᶙ", "ᴜ", "U", "u", "ᵫ"},
  30. 'v': {"Ṽ", "ṽ", "Ṿ", "ṿ", "Ʋ", "ʋ", "ᶌ", "ᶌ", "ⱱ", "ⱴ", "ᴠ", "V", "v"},
  31. 'w': {"Ẃ", "ẃ", "Ẁ", "ẁ", "Ŵ", "ŵ", "Ẅ", "ẅ", "Ẇ", "ẇ", "Ẉ", "ẉ", "ẘ", "ẘ", "Ⱳ", "ⱳ", "ᴡ", "W", "w"},
  32. 'x': {"Ẍ", "ẍ", "Ẋ", "ẋ", "ᶍ", "X", "x"},
  33. 'y': {"Ý", "ý", "Ỳ", "ỳ", "Ŷ", "ŷ", "ẙ", "Ÿ", "ÿ", "Ỹ", "ỹ", "Ẏ", "ẏ", "Ȳ", "ȳ", "Ỷ", "ỷ", "Ỵ", "ỵ", "Ɏ", "ɏ", "Ƴ", "ƴ", "ʏ", "Y", "y"},
  34. 'z': {"Ź", "ź", "Ẑ", "ẑ", "Ž", "ž", "Ż", "ż", "Ẓ", "ẓ", "Ẕ", "ẕ", "Ƶ", "ƶ", "Ȥ", "ȥ", "Ⱬ", "ⱬ", "ᵶ", "ᶎ", "ʐ",
  35. "ʑ", "ɀ", "ᴢ", "Z", "z"},
  36. }
  37. limit =0
  38. )
  39. func genEntriesForString(s string) []string {
  40. permutations := []string{}
  41. for i, c := range s {
  42. if substitutes, found := dictionary[c]; found {
  43. for _, sub := range substitutes {
  44. permutations = append(permutations, s[:i]+sub+s[i+1:])
  45. if limit > 0 && len(permutations) == limit {
  46. return permutations
  47. }
  48. }
  49. }
  50. }
  51. return permutations
  52. }
  53. func main() {
  54. fmt.Println("用法:")
  55. fmt.Println("main.exe alibaba{string}")
  56. fmt.Println("main.exe 域名")
  57. aString := os.Args[1]
  58. if aString != "" {
  59. for _, perm := range genEntriesForString(aString) {
  60. ascii, err := idna.ToASCII(perm)
  61. if err != nil {
  62. ascii = err.Error()
  63. }
  64. fmt.Printf("%s (%s)\n", perm, ascii)
  65. }
  66. return
  67. }else {
  68. fmt.Println("请按照指定格式")
  69. }
  70. }