DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   phpAV v1.1 (php-cli) (http://www.devprotalk.com/showthread.php?t=8282)

milos.z 08. 01. 2010. 18:04

phpAV v1.1 (php-cli)
 
skoro sam imao prilike da sa drugom razradjenu ideju pretvorim u delo. ta ideja je bila da se napravi php skripta koja ce brzo da skenira dati direktorijum i sve unutar njega u potrazi za opasnim funkcijama koje koriste maliciozne (uglavnom php) skripte. skripta je napravljena i sa lakocom se mogu dodavati ili oduzimati funkcije za kojima se traga kao i fajlovi koji ce biti skenirani. u sledecoj verziji (trenutnoj) dodata je i mogucnost pracenja imena fajlova u potrazi za 'sumnjivim' imenima (c99, r57, locus7...).

skripta je radjena u php-cli i zahteva pokretanje iz komandne linije gde nakon zavrsenog skeniranja ispise statistiku (broj skeniranih fajlova, broj nadjenih opasnih funkcija, vreme koliko je bilo potrebno da se odredjeni direktorijum skenira...). nakon zavrsenog skeniranja, u koliko je nadjena opasna funkcija, fajl ce se pojaviti u istom direktorijumu kao i skripta gde ce biti ispisani logovi skeniranja (u kom fajlu je opasna funkcija nadjena, koji red i ceo taj red), u koliko ne bude nadjena ni jedna opasna funkcija, nece se pojaviti log fajl.

izgled statistike:
Kôd:

user@host:~/Desktop$ ./phpAV-v1.1.php /opt/lampp/htdocs/
phpAV-v1.1
Milos Zivanovic [milosz.security@gmail.com]
Dir:                                        /opt/lampp/htdocs/
Dirs scanned:                                92
Files scanned:                                371
Files with dangerous functions found:        11
Dangerous functions detected:                24
Suspicious files detected:                1
Time taken:                                10.68754 seconds
user@host:~/Desktop$

izgled log fajla:
Kôd:

WARNING: /opt/lampp/htdocs/c99shell.php
...
File: /opt/lampp/htdocs/c99shell.php
...
Line: 2440 |    eval($eval);
...

skripta moze pomoci administratorima u protekciji njihovih servera, odnosno brzom skeniranju odredjenog direktorijuma u potrazi za opasinm funkcijama sto moze mnogo olaksati pronalazenje opasnih skripti na serveru.

skripta je za sad testirana samo na linuxu (ubuntu karmic koala), ali u buducem razvoju je planirano testiranje i sirenje na windows platformu

link do skripte:
Kôd:

http://www.packetstormsecurity.org/web/phpav-1.1.txt
pomoc, saveti, problemi: postujte u ovom thread-u ili saljite privatnu poruku

Ivan 08. 01. 2010. 22:56

Odlicno, bas sam skorije sa kolegom napisao slican skript za internu upotrebu. Ovakav skript u cron-u + email/sms obavestenje moze prilicno da doprinese brzom otkrivanju napada.

zidoo 10. 01. 2010. 16:01

Nice, samo napravi citanje definicija iz eksternog fajla, i da skenira JS/HTML code za poznate dosadne namete

milos.z 11. 01. 2010. 03:37

ne vidim poentu citanja iz eksternog fajla jer moze da se upise u isti, bas iz razloga sto 'definicija' ima malo. skripta je prvenstveno pravljena za otkrivanje php shell-ova, a za otkrivanje istih default-na konfiguracija je dovoljna.

skripta po default-u skenira html fajlove, ali u potrazi za unutrasnjim php/perl/* kodom.
ne znam sta si ti mislio da ova skripta radi...procitaj moj prvi post jos jednom, probaj da razumes svrhu i poentu programa.
ako nije problem da mi samo obrazlozis sta su 'poznate dosadne namete' i da probas da shvatis, dok to radis, kako te gluposti dodju na to mesto.:1091:

zidoo 11. 01. 2010. 13:57

vid ja sam pokuso da ti sajvet dam, ali posto vidim da si sa balkanskih prostora shvatio si to kao napad na svoj rad.

Ako ti ovaka skripta radi kroz kron kao sto rece Ivan malo je debilno da je prepravljas svaki put kad ti treba novi chekc, posto tako mozes da napravis neki mutav syntax error, zaboravis " ili ' ili tak nesto i eto problema.

Poznati nameti su onaj mutavi PHP "virus" koji u svaku *index* *main* i *.js fajl dodaje nekakv JS code, neko je imo problem na forumu, fora je sto ta skripta uvjek dodaje jedan te isti JS CODE pa onda trazis uzorak iz tog coda. Isto to radi i za PHP fajlove, dodaje neki code u vrh.

Enivej, posto si ti tako pametan i vidim da sve radis dobro sam ja ne bi vise smeto, docu kasnje da obrisem svoje postove kad se uvjerim da si procito izvinjenje.

milos.z 11. 01. 2010. 17:41

predrasude?

nisam shvatio kao napad na rad, vec kao kritike koje sam spreman da saslusam i da obrazlozim zasto nisam to tako uradio. nemoj pogresno da me shvatis.

skripta je ekstremno jednostavna za editovanje i mislim da je isto dal ces da editujes samu skriptu ili konfiguracioni fajl koji bih isto napisao u php formatu pa bih include-ovao u glavnu skriptu, jer da bi definicije bile u eksternom fajlu u nekom specijalnom formatu morao bih da pisem neke funkcije za citanje tog fajla i ludila i vise bi koda bilo na citanje tog fajla nego na sam rad programa (figurativno kazem)

jos jednom da dodam, prvenstveno pisan program za jurenje php shell-ova.

e sad, jurenje malicioznih javascript kodova preko funkcija je glupost. jedina mogucnost jurenja ovoga je preko neke seme ili stringa (definicija). da bi se to izvelo, potrebno je juriti maliciozne javascript kodove, vaditi seme iz njih i ubacivati u fajl sa definicijama. s obzirom da se novi maliciozni js kodovi prave svakodnevno. nemam ni vremena ni resursa da napisem kompletno av resenje za web server. (mozda bih za odredjenu sumu novca to i radio, za dz nikako)
vecina tih malicioznih js kodova dodje tu zbog slabosti u web aplikacijama, znas kako kazu, bolje spreciti nego leciti, tako da je bolje da admini vode racuna kakve se sve skripte pokrecu na njihovim serverima, i manje ce da se ciste od malicioznih js kodova.

zidoo 11. 01. 2010. 18:37

Ha cuj da ljudi vode racuna AV software bi bio suvisan :)

Ja sve sto sam napiso bazirano je iskljucivo na iskustvu i na problemima sa nekim virom koji je sluso FTP saobracaj, kupio user/pass i onda editovo PHP code, a taj PHP code je onda mjenjo sve HTML fajlove koji su mu dostupni.

Enivej, mi u firmi vec imamo rjesenje koji nam radi monitoring fajlova, tako pokusavamo da uhvatimo zarazen kod u sto manjem vremenu da jelte, nasi klijenti budu ASAP obavjesteni da ih nama dragi google ne bi oznacio kao opasne (jel ak ti se to desi, stvarno si nagrabusio).

To jurenje definicija je inace poso AV kuca, zat sam i predlozio odvajanje u poseban fajl pa bi danas-sutra komjuniti odrzavo definiciju svjezom a ti ili neko deseti sam software.

Et sad kad smo ""izgladili nesporazum"", fala i zivli.

3banchi 11. 01. 2010. 19:38

Nisam nesto vest u php-u...pa bi me zanimalo da li bi se ovakav skript mogao napraviti tako da upozori na "change time"...odnosno da je neki fajl izmenjen - tog dana u to i to vreme, odnosno da odmah obavesti na mail/sms.
Bilo bi korisno pogotovo za sajtove koji nemaju cestih izmena od strane administratora, a onda bi baza zlonamernog koda bila irelevantna.

Nemanja Avramović 11. 01. 2010. 19:53

Pisao sam na ES-u na ovu temu tako da neću da se ponavljam, ali isto sam (tamo) predložio jurenje malicioznog JS-a po fajlovima. Svestan sam ja da je problem na drugom mestu i da je bolje sprečiti nego lečiti, ali kada vam (nam :)) nešto već zarazi sajt malicioznim JS-om, mnogo bi lakše bilo detektovati ga preko nekog ovakvog softvera nego otvarati i tražiti isti po svim fajlovima (PHP) aplikacije/sajta.

@3banchi: Naravno da je moguće i to, samo ne znam koliko bi se opteretio server kad bi svaki čas skripta prolazila kroz sve foldere i gledala vreme poslednje izmene fajlova. U svakom slučaju skorije mi je na jedan od sajtova upao (verovatno preko kompromitovanog FTP naloga) maliciozni JS kôd, tako da sam i ja razmišljao o pravljenju slične skripte (samo još kad bih imao vremena da se bavim time :/)

nn.nn 11. 01. 2010. 21:38

Ako te zanima koji fajlovi su menjani:
Kôd:

nice -19 find ./ -type f -cmin -20 | mail -s "alert `date +%Y-%m-%d-%H:%M`" user@example.com
Staviš u cron da radi npr. na svakih 15 minuta i ne brineš puno o opterećenosti servera. Konkretno, na mojoj mašini ~100k fajlova za manje od sekunde.


Vreme je GMT +2. Trenutno vreme je 17:51.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.