![]() |
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/ Kôd:
WARNING: /opt/lampp/htdocs/c99shell.php 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 |
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.
|
Nice, samo napravi citanje definicija iz eksternog fajla, i da skenira JS/HTML code za poznate dosadne namete
|
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: |
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. |
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. |
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. |
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. |
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 :/) |
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 |
a zasto ne stavite neki specijalizovani software, AIDE, Tripwire, etc..
|
^ Na shared hostingu? Overkill, u najboljem slučaju.
|
Ovo uopšte nije loša ideja. Svojevremeno napravio sam klijentima jednu skriptu, koja se pokreće preko cron-a i pravi zip fajlova iz konfigurisanog foldera i subfoldera i šalje na mail.
Koristi tabelu da smešta podatke o procesiranim fajlovima, tako da svakim sledećim pozivom procesira samo fajlove koji nisu poslati ili koji su menjani. Uz to ide i LOG zašto je fajl u ZIP-u (nov, promenjen, preskočen, prevelik...). U konfiguraciji se podešava maksimalni broj fajlova, max veličina pojedinog fajla (da ne procesira recimo video fajlove) i max suma veličine fajlova. Na ovaj način, email nije preopterećen ogromnim fajlovima a klijent može da ima backup kod sebe. Naravno, svaki novi fajl ili promena postojećeg se šalje na email. Sa nekoliko različitih konfiguracija (folder, veličine i broj fajlova) i različitim učestalostima pokretanja sve radi veoma lepo i praktično postoji kopija sajta u lokalu kao i provera promena na fajlovima. Naravno, potrebno je i neko znanje da se detektuje šta sme da bude promenjeno a šta ne, ali to je već posao webmastera :) |
^ za to postoje gotove alatke (ne koristim)
inace, fora je objasniti posle klijentu kako da 'sklopi' ceo sajt od tih delimicnih zip-ova ;) |
da, to radi rsync sasvim lepo... a nije to toliko tesko sastaviti posle, samo treba otpakovati sve fajlove hronoloskim redom, ako su imenovani po datumima (pa se sortiraju dobrim redom) onda je vrlo lako skriptovati tu akciju
|
Citat:
Citat:
Ovde većina backup radi na neki od naprednih načina pa im ovako nešto i nije potrebno. A kad smo kod BACKUP-a, jedan moj dobar prijatelj mi je često govorio: Citat:
|
Citat:
|
Propustio sam da pomenem da je to samo mali "proof of concept" shell script. Ako ga u ovom obliku staviš u cron, slaće ti mailove svakih 15 minuta. Mada, ne bi trebalo da je teško prepraviti ga da proverava ima li izmena pre nego što pošalje mail.
Nemam nikakvog iskustva sa Direct Adminom - mislim da si dobro shvatio u vezi crona. |
Vreme je GMT +2. Trenutno vreme je 17:03. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.