ベラルヌシのむンタヌネットをスキャンしなかった方法

たえがき



この蚘事は、特定の囜のむンタヌネットのスキャンに぀いお以前に公開された蚘事ずあたり類䌌しおいたせん。なぜなら、私はむンタヌネットの特定のセグメントを開いおポヌトをスキャンし、最も人気のある脆匱性の存圚を倧量にスキャンするずいう目暙を远求しおいないからです。



私はむしろ少し異なる関心を持っおいたした-さたざたな方法を䜿甚しおBYドメむンゟヌン内のすべおの関連サむトを特定し、Shodan、VirusTotalなどのサヌビスを通じお、IPおよびオヌプンポヌトを介した受動的偵察を実行し、付属資料でその他の有甚な情報を収集するために、䜿甚されおいる技術のスタックを決定したすサむトおよびナヌザヌに関するセキュリティレベルに関するいく぀かの䞀般的な統蚈の圢成に関する情報。



入門曞ずツヌルキット



最初の蚈画は簡単でした。珟圚の登録ドメむンのリストに぀いおは地元のレゞストラに問い合わせおから、すべおの可甚性を確認し、機胜しおいるサむトの探玢を開始しおください。 実際には、すべおがはるかに耇雑であるこずが刀明したした-BYゟヌン玄13䞇ドメむンに実際に登録されおいるドメむン名の公匏統蚈ペヌゞを陀き、この皮の情報は自然であり、誰も提䟛したくありたせんでした。 そのような情報がない堎合は、自分で収集する必芁がありたす。







実際、ツヌルの点では、すべおが非垞にシンプルです。オヌプン゜ヌスに目を向け、い぀でも䜕かを远加し、最小限の束葉杖を仕䞊げるこずができたす。 最も䞀般的なもののうち、次のツヌルが䜿甚されたした。







アクティビティの開始出発点



はじめに、先ほど蚀ったように、理想的にはドメむン名が適切でしたが、どこで入手できたすか より単玔なものから始める必芁がありたす。この堎合はIPアドレスが適しおいたすが、逆匕き怜玢ではすべおのドメむンをキャッチするこずは垞に可胜ずいうわけではなく、ホスト名を収集するずきに垞に正しいドメむンずは限りたせん。 この段階で、私は再びこの皮の情報を収集するための可胜なシナリオに぀いお考え始めたした-私たちの予算がVPSレンタルの5ドルだったずいう事実が考慮され、残りは無料でなければなりたせん。



朜圚的な情報源





少し先に進み、このアプロヌチでそれぞれ玄5䞇の䞀意のドメむンずサむトを収集できたず蚀いたすすべおを凊理するこずはできたせんでした。 圌が積極的に情報を収集し続けおいれば、1か月未満の䜜業で確実に私のコンベダヌがデヌタベヌス党䜓、たたはそのほずんどをマスタヌできたでしょう。



ビゞネスに取り掛かろう



以前の蚘事では、IPアドレスに関する情報はIP2LOCATIONサむトから取埗されたしたが、明らかな理由により、これらの蚘事に出くわすこずはありたせんでしたすべおのアクションがずっず早く行われたため。 確かに、私の堎合、アプロヌチは異なっおいたした-私はデヌタベヌスを自分でロヌカルに取埗せず、CSVから情報を抜出しないこずを決めたしたが、継続的にサむトで盎接倉曎を監芖し、埌続のすべおのスクリプトが目暙を取る䞻なベヌスずしお-テヌブルを䜜成したしたさたざたな圢匏のIPアドレスCIDR、「from」および「to」リスト、囜のマヌク念のため、AS番号、ASの説明。







この圢匏は最適ではありたせんが、デモず1回限りのプロモヌションでは非垞に満足しおいたした。ASNのような远加情報を絶えず求めないように、自宅で远加で蚘録するこずにしたした。 この情報を取埗するために、私はIpToASNサヌビスに目を向けたした。IpToASNサヌビスには䟿利なAPI制限付きがあり、実際には自分に統合するだけです。



IP解析コヌド
function ipList() { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://lite.ip2location.com/belarus-ip-address-ranges"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $ipList = curl_exec($ch); curl_close ($ch); preg_match_all("/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\<\/td\>\s+\<td\>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/", $ipList, $matches); return $matches[0]; } function iprange2cidr($ipStart, $ipEnd){ if (is_string($ipStart) || is_string($ipEnd)){ $start = ip2long($ipStart); $end = ip2long($ipEnd); } else{ $start = $ipStart; $end = $ipEnd; } $result = array(); while($end >= $start){ $maxSize = 32; while ($maxSize > 0){ $mask = hexdec(iMask($maxSize - 1)); $maskBase = $start & $mask; if($maskBase != $start) break; $maxSize--; } $x = log($end - $start + 1)/log(2); $maxDiff = floor(32 - floor($x)); if($maxSize < $maxDiff){ $maxSize = $maxDiff; } $ip = long2ip($start); array_push($result, "$ip/$maxSize"); $start += pow(2, (32-$maxSize)); } return $result; } $getIpList = ipList(); foreach($getIpList as $item) { $cidr = iprange2cidr($ip[0], $ip[1]); }
      
      







IPを芋぀けた埌、デヌタベヌス党䜓を逆ルックアップサヌビスで制限なしで実行する必芁がありたす。これはお金を陀いお䞍可胜です。



これに最適で䜿いやすいサヌビスのうち、次の2぀に蚀及したす。



  1. VirusTotal-1぀のAPIキヌからの呌び出し頻床の制限
  2. Hackertarget.comAPI-1぀のIPからのヒット数の制限


制限をバむパスしお、次のオプションが取埗されたした。





さらに進んで、メヌルアドレスにスムヌズに移動したす。 それらは有甚な情報の゜ヌスにもなりたすが、どこでそれらを収集するのでしょうか 解決策を芋぀けるのに長い時間はかかりたせんでしたが、 ナヌザヌは私たちの個人サむトのセグメントをほずんど持たず、それらのほずんどは組織です。オンラむンストアディレクトリ、フォヌラム、条件付きマヌケットプレむスなどのプロファむルWebサむトが私たちに合っおいたす。



たずえば、これらのサむトの1぀を簡単に確認したずころ、倚くのナヌザヌが自分のパブリックプロファむルに盎接電子メヌルを远加しおいるため、将来の䜿甚に備えおこのビゞネスを慎重に解析できたす。



パヌサヌの1぀
 #!/usr/bin/env python3 import sys, threading, time, os, urllib, re, requests, pymysql from html.parser import HTMLParser from urllib import request from bs4 import BeautifulSoup # HEADERS CONFIG headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.9; rv:42.0) Gecko/20200202 Firefox/41.0' } file = open('dat.html', 'w') def parseMails(uid): page = 'https://profile.onliner.by/user/'+str(uid)+'' cookie = {'onl_session': 'YOUR_SESSION_COOOKIE_HERE'} r = requests.get(page, headers = headers, cookies = cookie) data = BeautifulSoup(r.text) userinfo = data.find_all('dl', {'class': 'uprofile-info'}) find_email = [] for item in userinfo: find_email += str(item.find('a')) get_mail = ''.join(find_email) detect_email = re.compile(".+?>(.+@.+?)</a>").search(get_mail) file.write("<li>('"+detect_email.group(1)+"'),</li>") for uid in range(1, 10000): t = threading.Thread(target=parseMails, args=(uid,)) t.start() time.sleep(0.3)
      
      







各サむトの解析の詳现に぀いおは説明したせん。どこかで総圓たりでナヌザヌIDを掚枬する方が䟿利な堎合、どこでサむトマップを解析し、そこから䌁業のペヌゞに関する情報を取埗し、そこからアドレスを収集する方が簡単な堎合です。 アドレスを収集した埌、いく぀かの簡単な操䜜を実行しおドメむンゟヌンですぐに䞊べ替え、「テヌル」を保持しお既存のデヌタベヌスから重耇を陀倖したす。



この段階で、スコヌプの圢成により、私たちは終わり、知性に進むこずができるず信じおいたす。 むンテリゞェンスは、既に知っおいるように、アクティブずパッシブの2぀のタむプがありたす。この堎合、パッシブアプロヌチが最も重芁です。 しかし、悪意のある負荷をかけずにポヌト80たたは443でサむトにアクセスするだけで、脆匱性を悪甚するこずは非垞に正圓なアクションです。 私たちの関心は、単䞀のリク゚ストに察するサヌバヌの応答です。堎合によっおは、2぀のリク゚ストhttpからhttpsぞのリダむレクトがあり、たれなケヌスでは3぀wwwが䜿甚される堎合がありたす。



知胜



ドメむンなどの情報を䜿甚しお、次のデヌタを収集できたす。





い぀でも先に進み、オプションのmasscanたたはnmap、zmapを利甚しお、ランダムな時間たたはいく぀かのむンスタンスからでも起動しおTorを介しお最初に蚭定するこずができたすが、他の目暙があり、名前は私が盎接スキャンを行わなかったこずを意味したす



DNSレコヌドを収集し、ク゚リずAXFRなどの構成゚ラヌを増幅する可胜性を確認したす。



NSサヌバヌレコヌドを収集する䟋
 dig ns +short $domain | sed 's/\.$//g' | awk '{print $1}'
      
      







MXレコヌドコレクションの䟋NSを参照、「ns」を「mx」に眮き換えおください



AXFRを確認したすここには倚くの解決策がありたす。ここには別の束葉杖がありたすが、セキュリティではなく、出力を衚瀺するために䜿甚したした
  $digNs = trim(shell_exec("dig ns +short $domain | sed 's/\.$//g' | awk '{print $1}'")); $ns = explode("\n", $digNs); foreach($ns as $target) { $axfr = trim(shell_exec("dig -t axfr $domain @$target | awk '{print $1}' | sed 's/\.$//g'")); $axfr = preg_replace("/\;/", "", $axfr); if(!empty(trim($axfr))) { $axfr = preg_replace("/\;/", "", $axfr); $res = json_encode(explode("\n", trim($axfr)));
      
      







DNS増幅を確認する
 dig +short test.openresolver.com TXT @$dns
      
      





私の堎合、NSサヌバヌはデヌタベヌスから取埗されたので、倉数の最埌に、実際には任意のサヌバヌだけを眮き換えるこずができたす。 このサヌビスの結果の正確性に関しお、そこですべおがスムヌズに機胜し、結果が垞に有効であるこずを確信できたせんが、結果のほずんどが本物であるこずを望みたす。



䜕らかの目的で、サむトぞの完党な最終URLを保持する必芁がある堎合、このためにcURLを䜿甚したした。



 curl -I -L $target | awk '/Location/{print $2}'
      
      





圌自身がリダむレクト党䜓を実行し、最埌のリダむレクトを衚瀺したす。 珟圚のサむトのURL。 私の堎合、それはWhatWebなどのツヌルのその埌の䜿甚に非垞に圹立ちたした。



なぜそれを䜿甚する必芁がありたすか OS、Webサヌバヌ、CMSサむト、䞀郚のヘッダヌ、JS / HTMLラむブラリ/フレヌムワヌクなどの远加モゞュヌル、および同じアクティビティフィヌルドで埌でフィルタリングを詊みるこずができるサむトタむトルを決定するため。



この堎合の非垞に䟿利なオプションは、ツヌルの結果をXML圢匏で゚クスポヌトしお埌続の分析を行い、埌で凊理する目暙がある堎合はデヌタベヌスにむンポヌトするこずです。



 whatweb --no-errors https://www.mywebsite.com --log-xml=results.xml
      
      





私自身は、出力の結果ずしおJSONを䜜成し、それをデヌタベヌスに入れたした。



ヘッダヌに぀いお蚀えば、次の圢匏のク゚リを実行するこずにより、通垞のcURLでほが同じこずを実行できたす。



 curl -I https://www.mywebsite.com
      
      





ヘッダヌで、たずえば正芏衚珟を䜿甚しおCMSおよびWebサヌバヌの情報をキャッチしたす。



有甚なものに加えお、Shodanを䜿甚しお開いおいるポヌトに関する情報を収集し、既に取埗したデヌタを䜿甚しお、APIを䜿甚しおVulnersデヌタベヌスを確認するこずもできたすサヌビスぞのリンクはヘッダヌにありたす。 もちろん、このシナリオでは正確性に問題があるかもしれたせんが、これは手動怜蚌による盎接スキャンではなく、サヌドパヌティの゜ヌスからのデヌタの単なる「ゞャグリング」ですが、少なくずも䜕もないよりはたしです。



ShodanのPHP関数
 function shodanHost($host) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.shodan.io/shodan/host/".$host."?key=<YOUR_API_KEY>"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $shodanResponse = curl_exec($ch); curl_close ($ch); return json_decode($shodanResponse); }
      
      







このような比范分析の䟋1




䟋2




はい、圌らはAPIに぀いお話し始めたので、Vulnersには制限があり、最も最適な解決策はPythonスクリプトを䜿甚するこずです、PHPの堎合、いく぀かの小さな困難に遭遇したした再び远加したすタむムアりトは状況を保存したした。



最新のテストの1぀-「wafw00f」などのスクリプトで䜿甚されるファむアりォヌルに関する情報を調査したす。 このすばらしいツヌルをテストしたずき、1぀の興味深いこずに気づきたした。䜿甚されおいるファむアりォヌルのタむプを刀別できるのは必ずしも初めおではありたせんでした。



wafw00fが朜圚的に怜出できるファむアりォヌルのタむプを確認するには、次のコマンドを入力できたす。



 wafw00f -l
      
      





ファむアりォヌルのタむプを決定するために、wafw00fはサむトに暙準リク゚ストを送信した埌、サヌバヌのレスポンスヘッダヌを分析したす。この詊行が十分でない堎合、远加の簡単なテストリク゚ストを生成したす。 。



なぜなら 統蚈に぀いおは、実際、すべおの回答は必芁ありたせん。正芏衚珟を䜿甚しお䜙分な郚分をすべお削陀し、ファむアりォヌルずいう名前のみを残したす。



 /is\sbehind\sa\s(.+?)\n/
      
      





さお、先ほど曞いたように、ドメむンずサむトに関する情報に加えお、電子メヌルアドレスず゜ヌシャルネットワヌクに関する情報もパッシブモヌドで曎新されたした。



メヌルドメむン固有の統蚈




゜ヌシャルネットワヌクのメヌルアドレスぞのバむンドを決定する䟋




最も簡単な方法は、Twitter2぀の方法でアドレス怜蚌を凊理するこずでしたが、この点でFacebook1぀の方法は、実際のナヌザヌセッションを生成するためのやや耇雑なシステムのため、少し耇雑になりたした。



ドラむ統蚈に移りたしょう。



DNS統蚈







プロバむダヌ-サむト数

ns1.tutby.com10899

ns2.tutby.com10899

ns1.neolocation.com4877

ns2.neolocation.com4873

ns3.neolocation.com4572

ns1.activeby.net4231

ns2.activeby.net4229

u1.hoster.by3382

u2.hoster.by3378



芋぀かった䞀意のDNS2462

䞀意のMXメヌルサヌバヌ9175䞀般的なサヌビスに加えお、独自のメヌルサヌビスを䜿甚する管理者が十分な数いたす

DNSゟヌン転送の圱響1011

DNS増幅の圱響531

少数のCloudFlareファン375䜿甚されおいるNSレコヌドに基づく



CMS統蚈







CMS-数量

ワヌドプレス5118

Joomla2722

Bitrix1757

Drupal898

OpenCart235

デヌタラむフ133

Magento32





ファむアりォヌル統蚈







ファむアりォヌル-番号

ModSecurity4354

IBM Webアプリのセキュリティ126

より良いWPセキュリティ110

CloudFlare104

Imperva SecureSphere45

ゞュニパヌWebAppセキュア45



Webサヌバヌの統蚈







Webサヌバヌ-番号

Nginx31752

Apache4042

IIS959



Nginxの叀い、朜圚的に脆匱なむンストヌル20966

Apacheの叀い、朜圚的に脆匱なむンストヌル995



hoster.byはドメむンずホスティングのリヌダヌであるずいう事実にもかかわらず、たずえば、䞀般にOpen Contactも際立っおいたしたが、真実は1぀のIP䞊のサむトの数にありたす。







IP-サむト

93.84.119.243556

93.125.99.83399

193.232.92.25386







電子メヌルで、詳现な統蚈情報を取埗せず、ドメむンゟヌンで䞊べ替えるこずに決めたした。むしろ、特定のベンダヌに察するナヌザヌの堎所を確認するこずは興味深いものでした。





ご芧のずおり、䞀般的に、この構図は非垞に奜意的であり、特にホスティングプロバむダヌの䞀郚からのnginxの積極的な䜿甚は喜ばれたした。 おそらく、これは䞀般的なナヌザヌの間で人気のあるホスティングタむプ、぀たり共有ホスティングタむプによるものです。



私はそれが本圓に奜きではなかったずいう事実から-AXFRのような゚ラヌに気づき、叀いバヌゞョンのSSHずApacheを䜿甚したミドルハンドのホスティングプロバむダヌが十分な数ありたす。 ここでは、もちろん、状況に぀いおのより倚くの光がアクティブなフェヌズによっお脱萜する可胜性がありたすが、珟時点では、私たちの法埋により、これは私には䞍可胜に思えたす。私はそのような問題のために害虫のランクに参加したくありたせん。



あなたがそれを呌び出すこずができれば、電子メヌルの画像は䞀般的にかなりバラ色です。 ああ、TUT.BYプロバむダヌが瀺されおいる堎所-これはドメむンを䜿甚するこずを意味したす。 このサヌビスは、Yandexに基づいお機胜したす。



おわりに



結論ずしお、私は1぀のこずを蚀うこずができたす-利甚可胜な結果であっおも、あなたはりむルスからサむトをきれいにし、WAFを蚭定し、異なるCMSを蚭定/远加するこずに関䞎しおいる専門家のために倧量の仕事があるこずをすぐに理解できたす。



たあ、真剣に、前の2぀の蚘事のように、問題はむンタヌネットず囜のすべおのセグメントでたったく異なるレベルに存圚し、攻撃的な方法などを䜿甚せずに問題をリモヌトで調査する堎合でも、いく぀かの問題が発生するこずがわかりたすe。 公的に入手可胜な情報を䜿甚しお、どの特別なスキルが䞍芁かを収集したす。



All Articles