Weryfikacja bezpieczeństwa Windows z wykorzystaniem wmic

08 kwietnia 2013, 08:40 | Narzędzia, Teksty | komentarzy 6
Tagi: ,
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Często podczas weryfikacji bezpieczeństwa konfiguracji systemu Windows zmuszeni jesteśmy do „klikania” w narzędziach administracyjnych i tworzenia zrzutów ekranowych, w celu analizy oraz dokumentowania konfiguracji. Samo zbieranie oraz analiza tego typu danych może być dość czasochłonna – klasycznym przykładem może być wylistowanie usług automatycznie uruchamianych przy starcie Windows czy typów systemów plików (NTFS vs FAT), na aktualnie dostępnych dyskach.

Okazuje się, że tego typu informacje można uzyskać w systemie Windows  jednym narzędziem: wmic.

Wstęp

Samo polecenie wmic stanowi konsolowe narzędzie do komunikacji z WMI (Windows Management Instrumentation). Informacje na stronach Microsoft o WMI/wmic są dość enigmatyczne. Część funkcji była czy nadal jest słabo udokumentowana. Jednocześnie narzędzie wmic, jest standardowym elementem systemu Windows poczynając od Windows XP (we wcześniejszych wersjach XP być może wymagane będzie doinstalowanie nowszego service pack-u). Wmic dostępne jest również od dawna w wersjach serwerowych Windowsów.

Na potrzeby artykułu, wystarczy wiedzieć, że narzędzie konsolowe wmic umożliwia między innymi wyświetlenie znacznej części konfiguracji systemu Windows.

Dalszy ciąg tekstu zawierał będzie konkretne przykłady korzystania wmic, w kontekście audytu bezpieczeństwa konfiguracji systemu windows. Nie przedstawiamy systematycznego opisu parametrów udostępnianych przez to narzędzie – odkrywanie możliwości wmic pozostawiamy Czytelnikowi po zapoznaniu się z poniższymi przykładami.

Listowanie typu zamontowanych systemów plików

Jednym z częstych zaleceń przy audycie bezpieczeństwa konfiguracji systemu Windows jest weryfikacja dostępności partycji NTFS (vs FAT, który nie umożliwia odpowiedniego narzucenia uprawnień na poziomie systemu plików). Sposobem na wylistowanie dostępności określonego rodzaju partycji jest wykonanie polecenia:

Listowanie share-ów (w tym ukrytych)

Kolejnym elementem, który może wpłynąć na bezpieczeństwo systemu Windows są tzw, ‚share-y’ czyli wydzielone fragmenty najczęściej systemu plików – dostępne poprzez sieć. Co więcej część sharów może być jest ukryta (niewidoczna w większości standardowych narzędzi listujących Windows) – takie zasoby oznaczane są znakiem $ na końcu nazwy share. Poniższe polecenie listuje wszystkie tego typu elementy w systemie:

Listowanie wystartowanych usług lub startowanych automatycznie

Kolejnym zaleceniem zwiększającym bezpieczeństwo systemu operacyjnego (nie tylko Windows) jest minimalizacja uruchomionych usług systemowych. Tego typu usługi można z wyświetlić poleceniem:

Zauważmy że polecenie to wyświetla kilka ciekawych wartości jak:

  • Opis danej usługi
  • PID danej usługi
  • Użytkownika z uprawnieniami którego działa usługa
  • Ścieżka do pliku binarnego – z parametrami wykonania usługi

Szczególnie ta ostatnia wartość może być przydatna – często bowiem w systemach Windows różne usługi uruchamiane są poprzez uruchomienie jednego, określonego pliku binarnego (w przykładzie powyższym jest to svchost.exe).  Powyższe wywołanie pozwala więc na wylistowanie szczegółów usług uruchamianych z takiego samego pliku binarnego – podczas gdy w przypadku popularnego Menadżera Zadań Windows widzimy jedynie nazwę obrazu bez parametrów (svchost.exe).

Listowanie użytkowników lokalnych

Kolejnym ważnym elementem mogącym pomóc nam w uszczelnianiu bezpieczeństwa systemu jest wylistowanie użytkowników oraz ich konkretnych ustawień (typ użytkownika, wymagalność hasła, ewentualne zablokowanie logowania się użytkownika, itd)

w analogiczny sposób można wygenerować informacje o grupach:

Inne użyteczne informacje

Z wykorzystaniem wmic możemy pobrać niemal każdą interesującą nas wartość konfiguracyjną systemu. Poniżej wskazujemy dalsze wywołania tego typu – do samodzielnego wykonania przez Czytelnika:

Aby uzyskać pełną listę parametrów obsługiwanych przez wmic wystarczy wydać polecenie:

Dalsze informacje można uzyskiwać, sukcesywnie stosując przełącznik /? np.:

Skryptowanie z wmic na potrzeby audytu bezpieczeństwa

Jeśli chcemy w szybki sposób uzyskać konfigurację systemu Windows – np. na potrzeby dalszej analizy bezpieczeństwa konfiguracji, możemy pokusić się wykonanie prostych skryptów .bat zawierających wywołania wmic oraz innych narzędzi konsolowych Windows. Skrypt taki może przekierowywać wyniki poleceń do pliku, który następnie możemy poddać analizie.

W tym przypadku możemy napotkać pewną niedogodność, mianowicie przekierowanie wyniku z tego typu skryptu do pliku tekstowego, może ujawnić problemy z kodowaniem znaków. Jeśli stworzymy plik test.bat i uruchomimy go w następujący sposób:

to otrzymamy wynik.txt z nieprawidłowym kodowaniem znaków (uniemożliwiającym ręczny odczyt i analizę wyników). Autorowi nie udało się odszukać racjonalnego powodu takiego działania systemu Windows (samo przekierowanie wyniku z konsolowego polecania wmic daje ‚dobry’ wynik). Rozwiązaniem tego problemu może być następujący sposób uruchomienia skryptu:

Z kolei przykład bardziej zaawansowanego skryptowania z wykorzystaniem wmic może wyglądać następująco:

W przykładzie tym listujemy w pętli porty nasłuchujące TCP (w polskiej wersji Windows należy „LIS” zastąpić „NAS”), oraz listujemy szczegóły usługi, która nasłuchuje na tym porcie. Stosowną informację otrzymamy, jeśli na danym porcie nasłuchuje usługa a nie np. izolowany proces. Powiązanie port nasłuchujący <-> usługa następuje poprzez identyfikator PID.

Podsumowanie

Konsolowe narzędzie wmic, może stanowić nieocenioną pomoc, przy tworzeniu skryptów pobierających konfigurację systemów (czy to na potrzeby audytu bezpieczeństwa czy rutynowych czynności administratorskich). W szczególności, w połączeniu z innymi narzędziami konsolowymi, dostępnymi w Windows takimi jak: netstat, tasklist, reg, net, find czy cacls – umożliwia zminimalizować nakład pracy związany z „klikaniem” w narzędziach administracyjnych Windows.

Jednocześnie zaznaczamy, że w tekście zostały jedynie wskazane wybrane elementy konfiguracji Windows związane z bezpieczeństwem. Niemniej jednak powyższe przykłady mogą stanowić dobry początek do przygotowania przez Czytelnika pełnego skryptu, pobierającego odpowiednie w danym kontekście dane.

–Michał Sajdak (michal.sajdak<at>securitum.pl)

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



Komentarze

  1. p

    To narzędzie daje zdecydowanie za dużo informacji użytkownikowi bez uprawnień administracyjnych.

    Odpowiedz
  2. P: zaaplikuj grseca ;p

    Odpowiedz
  3. trash

    Narzędzie świetne, nie znałem. Co do ogonków, to winno się je zlikwidować. ;] IMHO cała dziedzina, gałąź IT odpadła by wtedy, pewnie nie wynaleziono by kodowania UTF etc.
    Co do przesyłania przez pipe’a (czy przekierowania) to też mam z tym problem. Korzystam z narzędzi gnu dla windows i jeśli chcę wygrepować wynik polecenia netstata, aby zobaczyć, jakie procesy nasłuchują na jakich portach, to tak samo jak w artykule muszę użyć „NAS” albo „UCHIWANIE”, bo zamiast „Ł” wyświetla się „ť”

    Odpowiedz
  4. kedaR

    Jak na moje – z kodowaniem – pomóc może dodanie przekierowania bezpośrednio w *.bat:

    Zawartość audyt.bat:

    wmic service list full > wynik.txt

    Uruchomienie audyt.bat:

    C:\> test.bat

    Odpowiedz
    • Tak też AFAIR nie działało :/

      Odpowiedz
      • Shogun

        A może wystarczy zmienić czcionkę na właściwą?

        Odpowiedz

Odpowiedz