Sherlock je program otvorenog tipa (open-source) i dostupan je na GitHub-u. Ovaj alat je stvoren kako bi pretraživao društvene mreže u potrazi za korisničkim imenom kojeg navedemo.
Sada možemo zamisliti situaciju u kojoj recimo znamo potpis osobe koja je provalila u sustav. Iz samog potpisa ništa ne znamo, no dobivanjem rezultata korisničkih imena na dosta društvenih mreža možda ćemo se uspješno pomaknuti nekoliko koraka ka ustvrđivanju identiteta pojedinca koji je provalio u sustav.
Hunt down social media accounts by username across social networks. (tekst na GitHub stranici projekta)
Ovo je zbilja impresivan alat jer omogućuje pretraživanje čak 367 stranica, na kraju stranice će se nalaziti lista svih društvenih stranica koje su do sada podržane u Sherlock alatu.
Instalacija je vrlo jednostavna, ali zahtjeva da imate instaliran Python:
$ git clone https://github.com/sherlock-project/sherlock.git
$ cd sherlock
$ python pip install -r requirements.txt
Nakon instalacije potrebno je pokrenuti testove kako bi vidjeli radi li sve kako spada s naredbama:
$ cd sherlock/sherlock
$ python -m unittest tests\all.py --verbose
Nije očekivano da testovi padaju, trebali bi svi proći (100%) no to ne ovisi samo o izvornom kodu već i o društvenim stranicama koje pretražuje sherlock. Ako neka stranica pretstavlja problem, nju se može uvrstiti u listu onih stranica koje se mogu ignorirati i to modificiranjem datoteke:test/.excluded_sites
parametar | opis |
-h | pomoć |
–version | prikazivanje verzije projekta |
–verbose, -v | prikaži dodatne informacije prilikom analize i pretraživanja |
–folderoutput FOLDEROUTPUT, –fo FOLDEROUTPUT | spremanje rezultata u slučaju višestrukih username-ova |
–output | spremanje rezultata u slučaju jednog username-a |
–tor, -t | šalji zahtjeve preko Tor-a, što povećava vrijeme izvršavanja i zahtjeva da je Tor instaliran i na PATH-u operacijskog sustava |
–unique-tor, -u | šalji svaki zahtjev preko novog Tor klijenta, povećava vrijeme izvršavanja i zahtjeva da je Tor instaliran i na PATH-u operacijskog sustava |
–csv | kreiranje CSV rezultata |
–xlsx | spremanje rezultata u obliku Microsoft Excel spreadsheet-a |
–site SITE_NAME | točno specificiraj koje stranice želiš pregledati |
–proxy PROXY_URL, -p PROXY_URL | šalji zahtjeve preko proxy-a |
–json JSON_FILE, -j JSON_FILE | učitaj podatke iz JSON datoteke ili s interneta |
–timeout TIMEOUT | vrijeme u sekundama, koliko će se čekati odgovor nakon slanja zahtjeva (predefinirani broj sekunda je 60) |
–print-all | ispisuj stranice i tamo gdje nije pronađeno korisničko ime |
–print-found | ispisuj stranice tamo gdje je korisničko ime pronađeno |
–no-color | ne ispisuj izlaze u boji |
–browse, -b | pretražuj rezultate u definiranom internetskom pregledniku |
–local, -l | zahtijevaj korištenje lokalne data.json datoteke |
Ako želimo pretražiti niz korisničkih imena možemo napisati naredbu:
$ python sherlock user1 user2 user3
Na slici ispod se vidi primjer izlaza za naredbu:
$ python sherlock halo
Ako otvorimo bilo koji link, bilo koje društvene mreže, možemo vidjeti korisnički account. Na izlazu ispod se nalazi 9GAG account s username-om “halo”. Primjetiti i samu URL putanju koja praktički govori postoji li zadaci username ukoliko postoji zadana stranica.
Za pretpostaviti je da se svaka od zadanih stranica upravo pretražuje na taj način (naravno svaka posebno obrađuje izlaz, jer ne izbaci svaka stranica isti odgovor), da se pošalje URL zahtjev kojim se inače označavaju useri i na osnovu izlaza se definira postoji li korisnik s tim korisničkim imenom.
Isprobajmo sada parametar “–verbose”. Na slici ispod se može vidjeti da u ovom slučaju se ispisuje i vrijeme dobivanja odgovora društvene mreže na poslani upit.
Pokušajmo sada dobiti tekstualni izlaz uz pomoć parametra “–output”.
Na slici ispod, vidi se kako u izlazu se nalaze zapravo poveznice na korisničke račune na društvenim mrežama za traženog korisnika.
Ako se postavi zastavica “–csv” dobiju se malo detaljniji podaci, kao što su:
Primjer izlaza CSV datoteke se može vidjeti ispod na slici.
Za pretraživanje samo odabranih stranica koristi se zastavica “–site” nakon koje slijedi ime stranice za koje želimo ustanoviti nalazi li se tamo korisničko ime, a u slučaju da želimo odabrati više stranica možemo definirati to s naredbom:
$ python sherlock <username> --site <site_0> --site <site_1>
Zanimljivo je kako postoji mogućnost dodavanja nove društevene mreže preko JSON file-a. Na putanji
sherlock/sherlock/resources/data.json
se mogu pronaći primjeri stranica koji su do sada definirani:
Vidimo kako je struktura sljedeća:
{ "<ime stranice>": { "errorType":, "url":, "urlMain":, "username_claimed":, "username_unclaimed": } }
Atribut “errorType” zapravo govori gdje treba tražiti pogrešku. Postoji nekoliko načina na koje se može ustvrditi postoji li korisničko ime ili ne, na osnovu odgovora:
Kako bi dali primjer jedne društvene mreže možemo kreirati vlastiti JSON file.
{ "towardsdatascience": { "errorType": "message", "errorMsg": "Out of nothing, something." "url": "https://{}.medium.com", "urlMain": "https://towardsdatascience.com/", "username_claimed": "dr-mehmet-yildiz", "username_unclaimed": "nematakvogusernamea" } }
Za svako dodavanje društvene mreže u bazu provjeravanja možemo slijediti sljedeće korake:
U slučaju koji se nalazi u primjeru, dobije se odgovor kao na slici.
Možemo vidjeti kako se dobije neki odgovor pa tip “status_code” ne dolazi u obzir. Isto tako niti “responseUrl” jer ako se pogleda URL stranice ona je ostala ista.
Jedino što ukazuje na pogrešku jest tekst koji se pojavio, stoga je “errorType”: “message”.
Sada postoji dilema treba li koristiti tekst “PAGE NOT FOUND” ili “404” ili “Out of nothing, something.” ili nešto sasvim drugo, za atribut “errorMsg”. Ja sam se odlučio koristiti “Out of nothing, something”.
Kada se uputi naredba:
$ python sherlock halo --json <putanja do novokreiranog json-a>
dobije se odgovor kao na slici:
Dok s naredbom:
$ python sherlock mike --json <putanja do novokreiranog json-a>
dobije se odgovor o postajanju user-a, odgovor je na slici:
Lista do sada podržanih stranica:
2Dimensions, 3dnews, 7Cups, 9GAG, About.me, Academia.edu, Airbit, Airliners, Alik.cz, AllMyLinks, Anilist, Apple Developer, Apple Discussions, Archive of Our Own, Archive.org, Arduino, ArtStation, Asciinema, Ask Fedora, AskFM, Audiojungle, Autofrage, Avizo, BLIP.fm, BOOTH, Bandcamp, Bazar.cz, Behance, Bezuzyteczna, BiggerPockets, Bikemap, BinarySearch, BioHacking, BitBucket, BitCoinForum, Bitwarden Forum, Blogger, BodyBuilding, BongaCams, Bookcrossing, BraveCommunity, BuyMeACoffee, BuzzFeed, CGTrader, CNET, CTAN, Carbonmade, Career.habr, Championat, Chatujme.cz, ChaturBate, Chess, CloudflareCommunity, Clozemaster, Clubhouse, Codecademy, Codechef, Codepen, Codewars, Coil, ColourLovers, Contently, Coroflot, Cracked, Crevado, Crowdin, Cryptomator Forum, Cults3D, DEV Community, DailyMotion, DeviantART, Discogs, Discuss.Elastic.co, Disqus, Docker Hub, Dribbble, Duolingo, Enjin, Envato Forum, Etsy, Euw, EyeEm, F3.cool, Facebook, Fameswap, Fandom, Finanzfrage, Fiverr, Flickr, Flightradar24, Flipboard, Football, FortniteTracker, Fosstodon, Freelance.habr, Freelancer, Freesound, G2G, GNOME VCS, GaiaOnline, GeeksforGeeks, Gamespot, Genius (Artists), Genius (Users), Gesundheitsfrage, GetMyUni, Giphy, GitBook, GitHub, GitLab, Gitee, GoodReads, Google Play, Gradle, Grailed, Gravatar, Gumroad, GunsAndAmmo, Gutefrage, HEXRPG, HackTheBox, Hackaday, HackerEarth, HackerNews, HackerOne, HackerRank, Harvard Scholar, Hashnode, Houzz, HubPages, Hubski, ICQ, IFTTT, ImgUp.cz, Imgur, Instagram, Instructables, Ionic Forum, Issuu, Itch.io, Itemfix, Jellyfin Weblate, Jimdo, Joplin Forum, KEAKR, Kaggle, Keybase, Kik, Kongregate, LOR, Launchpad, LeetCode, LessWrong, Letterboxd, Lichess, Linktree, Listed, LiveJournal, Lobsters, Lolchess, LottieFiles, Mapify, Medium, Memrise, Minecraft, MixCloud, Motorradfrage, Munzee, MyAnimeList, MyMiniFactory, Myspace, NICommunityForum, NationStates Nation, NationStates Region, Naver, Needrom, Newgrounds, Nextcloud Forum, Nightbot, Ninja Kiwi, NotABug.org, Nyaa.si, OGUsers, OK, OnlyFans, OpenStreetMap, Opensource, Oracle Community, OurDJTalk, PCGamer, PSNProfiles.com, Packagist, Pastebin, Patreon, PepperIT, Periscope, Pinkbike, PlayStore, Pokemon Showdown, Polarsteps, Polygon, Polymart, Pornhub, ProductHunt, PromoDJ, PyPi, Quizlet, Rajce.net, Rate Your Music, Rclone Forum, Redbubble, Reddit, Reisefrage, Replit.com, ResearchGate, ReverbNation, Roblox, RoyalCams, RubyGems, Rumble, RuneScape, SWAPD, Sbazar.cz, Scratch, Scribd, ShitpostBot5000, Shpock, Signal, Sketchfab, Slack, Slant, Slashdot, SlideShare, Slides, Smule, Snapchat, SoundCloud, SourceForge, SoylentNews, Speedrun.com, Splice, Splits.io, Sporcle, Sportlerfrage, SportsRU, Star Citizen, SteamGroup, Strava, SublimeForum, TETR.IO, TLDR Legal, TRAKTRAIN, Telegram, Tellonym.me, Tenor, ThemeForest, TikTok, Tinder, TradingView, Trakt, TrashboxRU, Trello, TryHackMe, Twitch, Twitter, Typeracer, Ultimate-Guitar, Unsplash, VK, VSCO, Velomania, Vero, Vimeo, Virgool, VirusTotal, WICG Forum, Warrior Forum, Wattpad, We Heart It, WebNode, Weblate, Whonix Forum, Wikidot, Wikipedia, Windy, Wix, WolframalphaForum, WordPress, WordPressOrg, Wordnik, Wykop, Xbox Gamertag, Xvideos, YandexMusic, YouNow, YouPic, YouPorn, Zhihu, akniga, aminoapp, authorSTREAM, babyRU, babyblogRU, ebio.gg, chaos.social, couchsurfing, d3RU, dailykos, datingRU, devRant, drive2, eGPU, eintracht, fixya, fl, forum_guns, forumhouseRU, freecodecamp, furaffinity, geocaching, gfycat, habr, hackster, hunting, iMGSRC.RU, igromania, interpals, irecommend, jbzd.com.pl, jeuxvideo, kofi, koo, kwork, labpentestit, last.fm, leasehackr, livelib, mastodon.cloud, mastodon.social, mastodon.xyz, mercadolivre, metacritic, minds, moikrug, mstdn.io, nairaland.com, nnRU, note, npm, opennet, osu!, phpRU, pikabu, pr0gramm, prog.hu, satsisRU, sessionize, skyrock, social.tchncs.de, spletnik, svidbook, toster, uid, wiki.vg, xHamster, znanylekarz.pl, zoomit
Poznato je da određeni zlonamjerni IT stručnjaci (popularno zvani “hakeri”) znaju ostaviti neke inicijale ili svoj potpis. Za pretpostaviti je da će se oni u svojim krugovima nastojati oglašavati i svojim virtualnim kolegama davati do znanja da su postigli određene pomake i uspijehe.
Naravno da je vrlo teško ustvrditi iz samo tog imena ili potpisa tko stoji iza napada, no logičan slijed događaja je pokušati pronaći gdje još stoji taj potpis. Malo je vjerojatno da će se različiti IT stručnjaci potpisivati na isti način, već žele biti preopoznatljivi i jedinstveni u svojim krugovima. Stoga bi bilo dobro imati alat koji bi bio u mogućnosti pretraživati zbilja puno stranica u potrazi za stranicom odnosno korisničkim imenom istim kao i potpis. U tom slučaju tu Sherlock dolazi na scenu.