Archive for październik, 2006
Łańcuszkowy atak na Gadu-Gadu
październik 28, 2006, godzina 19:43 · Internet, Komputery, Microsoft »
Dziennik Internautów ostrzegł przed wirusem, który rozprzestrzenia się przez Gadu-Gadu. I choć ja takiego linku nie dostałem, to jednak postanowiłem się wirusem zająć. A robakiem właściwie, bo zdaje się, że jedyne co robi, to rozprzestrzenia się. A co ciekawe, korzysta z listy kontaktów Gadu-Gadu, co jest nowością, i co jest specyficzne tylko dla polskiego Internetu.
Wszystko zaczyna się od linku ze stroną, która podobno otwiera się tylko pod Internet Explorerem. I jest to prawda, bo strona wykorzystuje kilka luk w najpopularniejszej przeglądarce, w celu skopiowania na komputer użytkownika oraz uruchomienia pliku o nazwie win32.exe. Sam kod strony został potraktowany jakimś obsfukatorem, ale po chwili zabawy da się odtworzyć wygląd skryptu i ustalić sposób jego działania.
Wykorzystywane są luki w ADODB.Stream (opisana przez US-CERT w alarmie TA04-184A już 2 czerwca 2004), którą także wykorzystywał na przykład trojan Downloader.Ject, do której dostępna jest poprawka. Warto spojrzeć do bazy danych Microsoft, do artykułu KB870669; luki w WScript.Shell; luka opisana w biuletynie MS06-014 i kilka innych. Cały skrypt exploita, oznaczony jako krytyczny i pochodzący z sierpnia 2006 dostępny jest na securitydot.net (wersja w VBScript).
Po ściągnięciu pliku, jest on wykonywany i dociągane są kolejne pliki wykonywalne. Potem następuje właściwa część ataku, program Gadu-Gadu jest uruchamiany, a jego lista kontaktów jest wykorzystywana do rozesłania automatycznej wiadomości o treści w stylu:
Odwiedź stronę [adres] :D Otwiera się tylko w IE
Wykorzystane adresy zawierają człon “kaczynski”, co sugeruje, że mogą być to jakieś dowcipy o urzędującym prezydencie. Popularność tychże to także popularność dla robaka. Większość programów antywirusowych nie reaguje na sam plik wykonywalny, BitDefender reaguje na atak dokonywany przez stronę internetową (słusznie uznaje to za Generic.XPL.ADODB.8D2C2D8A). Program BitDefender powiedział, ze jest to Trojan.Sillydl.B, Kaspersky Anti-Virus iż Trojan-Downloader.Win32.Vidlo.aj. Co oznacza, że jeden ze znanych wirusów został wykorzystany po prostu do pobrania innej aplikacji, która to wykonuje właściwy atak. Tutaj dziękuję balbardagramowi za to, że pobawił się z tym, i ustalił jak programy antywirusowe na to reagują.
Ze względu na to, że wykonanie tejże aplikacji odbywa się poprzez ntvdm.exe, to wskazuje, że została ona napisana w trybie 16-bitowym. Nie przetestowałem, czy wykorzystuje ona fakt, ze hasło użytkownika GG jest zapisywane w banalny sposób w pliku konfiguracyjnym, ale raczej jest wykorzystywane, bo wiadomości rozsyłane są z numeru zaatakowanego użytkownika (co może uśpić czujność znajomych). Być może nie zapisywanie hasła w programie może uchronić przed atakiem, tak jak i praca bez konta administratora, nie przetestowałem jeszcze takiej sytuacji.
Przygotowałem jednak wczoraj wieczorem screencast (WMV, 2,5 MB, Xvid, 1,4 MB, OGG/Theora, 1,9 MB lub Google Video) obrazujący przebieg ataku, na kompletnie “gołym” Windows XP SP2, z zainstalowanym Gadu-Gadu 7.6, na wbudowanym koncie administratora (tak, aby były wszystkie uprawnienia możliwe), z włączoną zaporą, bez antywirusa. Nie sprawdzałem jak zachowuje się to na koncie z ograniczonymi uprawnieniami, nie demonstrowałem też samego ataku przez przeglądarkę.
Nie wiem, czy robak robi cokolwiek jeszcze oprócz rozesłania się, zajmuje procesor, ale z pobieżnego badania File Monitorem wynikło, że nie ściąga nowych plików, a tylko i wyłącznie “zżera” czas procesora.
Domeny, z których dokonywany jest atak to jak dotąd:
- arunalu.net (prawdopodobnie atak już niemożliwy)
- bahwal.com
- www.rue6.de
Jak pisał Luke Mica - trzeba po prostu myśleć, i uważać. Dla pewności zapytać naszego znajomego co to za link nam wysłał. No i oczywiście - najlepiej nie korzystać z Internet Explorera.
Technorati Tags: screencast, Internet Explorer, worm, Gadu-Gadu, attack, security
PS. Obiecuję, że jeszcze jeden download filmiku w innym formacie udostępnię, na Google Video jakość jest słaba, wiem.
PPS. Dostępne dwa nowe formaty screencastu do pobrania, jeśli kogoś interesuje.
Dodane: Wczoraj, 26 grudnia, swój atak zaczął nowy wariant robaka. Działa dokładnie tak samo jak poprzedni, ten sam mechanizm ataku typu JS.Downloader, atak na Firefoksa poprzez wtyczkę do Windows Media Player. Opery z mojej wiedzy atak nie dotyka.
To, że ktoś ma Tlen czy cokolwiek innego, nie jest ważne, ważne jest, że posiada na dysku program Gadu-Gadu, oraz profile z zapisanymi kontaktami i hasłem. Gdy tego nie ma, to atak się nie może powieść. Ze względu na to, że robak wysyła linki do siebie samego z konta zaatakowanego użytkownika, to działanie zaczyna filtr antyspamowy GG i wiadomości wychodzące i przychodzące są blokowane na jakiś czas (bodajże 72 godziny). Trzeba zwrócić się do tech@gadu-gadu.pl z prośbą o pomoc, jeżeli chcecie odblokować swoje konto.
Rozwiązanie problemu jest jasne. Nie klikać w nieopisane linki.
Permalink |
Nie dotykaj Program Files!
październik 24, 2006, godzina 18:37 · Microsoft, Programowanie, Windows »
Jest sobie taki katalog, w którym większość instalowanych pod Windows aplikacji ląduje. Program Files. I są aplikacje, które sobie swoje dane konfiguracyjne zapisują w swoim podkatalogu tegoż systemowego folderu. W jakiś plikach INI, XML - nieważne. Fakt jest jednak taki, że niestety rzadko programiści (amatorzy - w przypadku komercyjnych aplikacji tego problemu nie zauważyłem) zwracają uwagę na fakt, że użytkownik niekoniecznie musi mieć prawa zapisu do katalogu aplikacji! I wtedy piękne “Cannot create file” czy inny nieobsłużony wyjątek środowiska programistycznego się pojawia. Bo kto by o tym pomyślał, ze czasy Windows 9x się skończyły, a konta administracyjnego się nie używa?
Sam przyznaję, ten błąd popełniliśmy w PilotMP3. I Notatniku SP. Ale gdzieś go jeszcze widziałem w paru programach. A odkryłem tę sytuację praktycznie przypadkiem. Pod Windows XP używałem konta “Użytkownik zaawansowany”, które akurat prawa zapisu do Program Files ma (ale do Windows - nie). Ale siadłem do Visty i używam konta administratora. Jednak jestem chroniony przez UAC (User Account Control) i każda akcja poważniejsza wymaga potwierdzenia, w tym także zapis do Program Files. Niestety, używałem pewnej aplikacji, która systemowi nie zgłosiła zapotrzebowania na uprawnienia administracyjne (co w sumie normalne - raz, że o Viście to nie słyszano gdy ją pisano, dwa - bo nie robi nic specjalnego), próbowała zapisać do swojego katalogu… i wyskoczył błąd. No trudno się mówi. Ale ja chcę zamknąć program - błąd! Bo nie może zapisać konfiguracji. I wyjść się inaczej niż przez zabicie procesu nie da…
Zapis konfiguracji do katalogu aplikacji jest zły. Po to dano nam w systemie Windows 2000/XP/Vista katalog Documents and Settings[konto]Dane aplikacji (względnie Users[kontoAppData w Viście, na który przekierowywany jest link ze starszych systemów - podziękujmy łączom stałym), aby w nim takie rzeczy zapisywać.
W PilotMP3 1.1 (obecnie faza RC) zastosowałem pewną bardzo skomplikowaną z pozoru funkcję, która uwzględnia kilka różnych przypadków folderów gdzie dane programu można zapisać. Ogólnie zaczyna ona od zapisania w folderze, którego ścieżkę pobiera ze zmiennej środowiskowej %APPDATA%. Jeżeli jest pusta, to oznacza, że mamy do czynienia z systemem Windows 98/ME - a więc wtedy ustalamy katalog roboczy na katalog aplikacji. Jeżeli mamy już jednak ścieżkę do “Danych aplikacji” to próbujemy tam utworzyć podkatalogi jeśli ich nie ma. Albo zapisujemy tam gdzie trzeba. Ale, jeżeli zapis się nie uda - to zapisujemy dane do katalogu tymczasowego, którego ścieżkę pobiera się ze zmiennej środowiskowej %TEMP%. A do niego to każdy zapisać może. Co najwyżej dane znikną (w rzeczywistości dochodzi jeszcze warunek próbowania zapisu w Temp - jeśli się nie powiedzie to program generuje fatalne zakończenie aplikacji z wyjątkiem $FF).
Nie dotykać katalogów, do których się nie ma absolutnej pewności, że będzie można zapisać. Bo uruchamianie aplikacji z prawami administratora chyba mija się z celem. Programiści - macie aplikacje, które do swoich katalogów zapisują dane? Przepiszcie je. Żeby użytkownikom było lepiej.
Technorati Tags: Microsoft, Windows, Vista, UAC, programming, Program Files
Permalink |
Hateemelowe dziwadełka #13
październik 13, 2006, godzina 13:11 · Dziwadełka »
Dzisiaj piątek, 13-go i się jakoś tak złożyło, że trzynaste dziwadełko się w tym dziale znajdzie.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<link href="[ciach]" rel="stylesheet" type="text/css"/>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?xml version="1.0" encoding="iso-8859-2"?>
<?xml version="1.0" encoding="iso-8859-2"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<p>
<title>[ciach]</title>
<meta name="description" content="[ciach]" />
(...)
<link rel="alternate" type="application/rss+xml" title="[ciach]" href="[ciach]" />
(...)
<table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
Strona nowoczesna się wydała. I jest XHTML, i jest nawet RSS. Jest i prolog XML i namespace. Tylko dlaczego <!DOCTYPE> oraz prolog są gdzieś w środku, a potem jest <p>, za którym są kolejne tagi <meta>? A to się metadanych do sekcji <head> już nie wstawia?
Tak na oko to ta sytuacja jest spowodowana jakimś server-side systemem szablonów (strona miała rozszerzenie .php, więc jest to prawdopodobne), który poskładał szablony w gotową stronę, ale niezbyt prawidłowo przygotowane były poszczególne fragmenty.
To jest swoją drogą problem - zwykle gdy przygotowuję stronę, która ma być “wrzucona” do systemu szablonowego, to po stworzeniu w jakimś programie pojedynczego dokumentu, odpowiednie części kodu wrzucam do oddzielnych plików. Jednak, gdy przyjdzie do edycji jakiegoś pliku ze środka, to faktycznie programy różne mogą być tak “mądre” aby metatagi dodatkowo dodać. Niestety trzeba na to uważać, i w razie potrzeby ręcznie usunąć dodatkowe, niepotrzebne znaczniki, które dla jednego dokumentu są niezbędne, ale dla takiego składanego z kilku - są błędem, gdy znajdą się w nieodpowiednich miejscach.
Permalink |
JavaScript i skrypty Javy
październik 7, 2006, godzina 19:52 · Społeczeństwo, Webmastering »
Ktoś niedawno powiedział, że Java i JavaScript mają tyle wspólnego co kot i kotlet. Niestety, nie pamiętam kto, być może któryś z użytkowników serwisu 4programmers.net. Ale jest to prawda. Czytam co jakiś czas różne pytania, gdzie ludzie są zainteresowani “Javą na stronach”, lub popularnymi “skryptami Javy”. Są to pytania błędne, bo JavaScript i Java posiadają tylko i wyłącznie wspólny fragment nazwy, a w rzeczywistości są zupełnie innymi językami przeznaczonymi do róznych celów. Chyba, ze chodzi o applety Javy na stronach WWW, ale to się coraz rzadziej w Internecie pojawia. Na szczęście.
Java jest obiektowym językiem programowania. Programy napisane w Javie można uruchomić na wielu urządzeniach, takich jak telefony komórkowe lub komputery oraz pod różnymi systemami operacyjnymi, przy użyciu Wirtualnej maszyny Javy, która musi być w danym środowisku zainstalowana.
JavaScript (”JS”) to stworzony przez firmę Netscape zorientowany obiektowo skryptowy język programowania, najczęściej stosowany na stronach WWW. (…) Początkowo Netscape nazwała ten język “LiveScript”, lecz szybko nazwa ta została zmieniona na “JavaScript” wskutek biznesowych porozumień między Netscape a firmą Sun Microsystems.
Stąd takie coś jak skrypty Javy w ogóle nie istnieje. W Javie skryptów nie ma. Skrypty mogą być napisane w JavaScript, lub którejś z jej (jego?) odmian, ale w Javie nie. Nieporozumienie językowe, jakim są te nieszczęsne skrypty Javy, powodują, że niektórzy programiści “tej prawdziwej” Javy dostają piany na ustach i gotowi są zwyzywać kogoś, kto JS z ich ukochanym językiem myli. Lepiej uważać ;-)
A już tak sam powinienem sobie zanotować, że czepiam się Javy i JS, a C i C++ to też dwie różne rzeczy, a zdarza mi się je mylić… Jeżeli człowiek nie siedzi w danym temacie, to mylenie podobnych terminów jest zrozumiałe. Ale gdy jednak do tego trzeba przysiąść, choćby żeby kogoś na forum zapytać, to chyba jednak warto dowiedzieć się o co naprawdę należy pytać. Żeby nie wyjść na głupka. Lub ignoranta.
Permalink |
Montowanie dysków (pod Windows)
październik 1, 2006, godzina 10:53 · Microsoft, Windows »
Gdy o montowaniu partycji pod katalogi wspomniałem znajomemu (udzielającemu się też tutaj Dotowi) był zdziwiony, zaskoczony, rzekłbym nawet, że uznał mnie za wariata.
- Dot
- czekaj, podmontowane do folderów?
- Dot
- w Windzie?
- Ktos
- tak, jakiś problem?
- Dot
- no… tak jakby ;)
- Ktos
- ja nie widzę :)
Montowanie dysków (partycji) pod Windows wydaje się czymś dziwnym, ale to jest naturalna operacja w systemie plików NTFS. Nie wiem czy była dostępna w Windows NT 4, ale na pewno jest w 2000, XP i Viście. A banalna do przeprowadzenia i od razu ułatwia parę rzeczy. Ja na przykład teraz trzymam gry (niestety te zajmują coraz więcej miejsca na dysku - to się w głowie nie mieści ile!) i dane multimedialne (zdjęcia, filmy, mp3) na oddzielnych partycjach, na drugim dysku.

Ale są one podmontowane jako odpowiednie katalogi na jednym z dysków, więc mam szybki dostęp i nie mam bałaganu z literami dysków. A parę godzin po dolożeniu do komputera drugiego dysku twardego mogło zacząć brakować liter w alfabecie. Swoją drogą zawsze zastanawiała mnie taka sytuacja - co wtedy Windows robi?
Aby podmontować partycję (która moze być sformatowana zarówno w FAT, jak i NTFS) potrzebujemy innej partycji, sformatowanej w systemie NTFS i pustego folderu. Oraz nieocenionego narzędzia “Zarządzanie dyskami”, dostępnego z konsoli “Zarządzanie komputerem”, bądź bezpośrednio przez wywołanie diskmgmt.msc.
Klikając prawym klawiszem myszy na partycji mamy możliwość zmiany litery dysku lub ścieżki. Nic nie stoi na przeszkodzie, aby jedna partycja była zamontowana w kilku miejscach i do tego posiadała jeszcze literę dysku.

Wybieramy “Zainstaluj w następującym pustym folderze plików NTFS”, wybieramy folder i gotowe. Mamy partycję widzianą w Eksploratorze jako katalog. Oznaczony odpowiednią ikoną, dla odróżnienia od normalnych folderów.

Mechanizm ten, podobny do montowania dysków znanego z systemów Uniksowych, pozwala na posiadanie dużej ilości partycji i zmniejszenie wśród nich bałaganu.
Niestety, jest jedna, całkiem poważna wada. Wyobraźmy sobie, że chcemy zainstalować program na dysku C:, ale brakuje miejsca. Czy coś szkodzi podłączyć dodatkową partycję pod - dajmy na to - podkatalog w “Program Files” żeby mieć więcej miejsca i żeby zachować ład w programach? Niestety, mechanizmy obliczania ilości wolnego miejsca na partycji nie sumują tej ilości z wolnym miejscem na podmontowanych partycjach, co powoduje, że program nadal może sądzić, że miejsca ma za mało. Wielka szkoda.
Permalink |