Dwa słowa o makrach i bezpieczeństwie

W tym nieco obszernym wpisie poruszę dość ważny temat jakim są makra. Niestety, ale zdarza się, że użytkownik komputera nie czyta komunikatów tylko wesoło sobie klika we wszystko co się rusza a potem krzyczy „olaboga! Hakerska aplikacja zaszyfrowała mi wszystkie pliki w komputerze i domaga się okupu!”. W tym wpisie chcę Ciebie uświadomić czym są makra i jak z nimi żyć tak aby nie narobić sobie biedy. Wersja TLTR znajduje się na końcu artykułu.

Kliknij tutaj, aby pobrać pliki do zagadnień omawianych w artykule.

Czym są te niebezpieczne makra?

Wyobraź sobie, że na kuchennym stole leży nóż. Czy uważasz, że jest to potencjalne narzędzie zbrodni? Raczej nie! Jest to świetne narzędzie, dzięki któremu pokroisz sobie chlebek, wędlinkę w celu zrobienia pożywnej kanapki. Jednak od czasu do czasu przeczytasz w gazecie artykuł o tym, że ktoś użył noża niezgodnie z przeznaczeniem atakując nim inną osobę.

Podobnie jest z makrami. W 99% przypadków ułatwiają one codzienną pracę poprzez np. automatyzowanie żmudnych czynności. Pozostaje jednak ten 1% przypadków, gdy ktoś użył mechanizmu makr do wyrządzenia szkody drugiej osobie.

No dobrze, ale skoro makra mogą być niebezpieczne, to dlaczego są wciąż używane? Oto kilka przykładowych zastosowań makr:

  • Automatyzują monotonne czynności, które można nagrać. Przykładowo: gdy każdego dnia wklejasz dane z Internetu (np. kursy akcji z zagranicznej strony) to być może za każdym razem używasz opcji zamiany wszystkich kropek na przecinki w kolumnie E, oraz usuwasz zbędne kolumny. A gdyby te czynności jeden jedyny raz w życiu nagrać i potem tylko klikać w jeden przycisk, który spowoduje wykonanie wszystkich nagranych wcześniej czynności?
  • Excel posiada ponad 400 funkcji (m.in. SUMA, ŚREDNIA, MAX, LICZ.JEŻELI itp.) Jeśli wśród tych 400 funkcji nie znajdziesz tej, którą potrzebujesz to za pomocą języka VBA można napisać własne funkcje. Przykładowo wystawiasz faktury przy użyciu Excelowego szablonu. Niestety, ale w Excelu nie ma funkcji, która zamieni liczbę 1234,56 na słowną kwotę (tj. jeden tysiąc dwieście trzydzieści cztery złote 56/100). I tutaj znów z pomocą przychodzą makra!
  • Pozwalają na napisanie dodatkowych narzędzi (wtyczek) zwiększających możliwości programów z pakietu MS Office. Takim dodatkiem jest np. narzędzie Solver czy też „moja wtyczka” usuwająca wiszące spójniki
  • Pozwalają na napisanie prostych aplikacji typu: wypełniasz pola w oknie dialogowym a następnie aplikacja wpisuje te dane do odpowiednich komórek w Excelu (uwzględniając różne często rozbudowane warunki), następnie ukrywa niepotrzebne dla danego przypadku wiersze i generuje plik PDF z wypełnionym raportem, który dodatkowo automatycznie jest wysyłany na odpowiedni adres e-mail.
  • Jako ciekawostkę dodam, że w języku VBA napisać jakąś prostą grę np. PacMan

Demonstracja makra

Otwórzmy plik Makro1 – przycisk.xlsm. Prawdopodobnie masz ustawionego Excela tak, aby makra nie były automatycznie aktywowane (ze względu na bezpieczeństwo). I jest to bardzo dobre rozwiązanie  – jeśli nie wiesz co to są za makra to ich nie uruchamiaj (jaką masz pewność, że plik, który dostałeś na maila albo ściągnąłeś z Internetu nie zawiera instrukcji kasujących pliki z Twojego komputera?)

Ponieważ moje makra są bezpieczne, więc na potrzeby tego artykułu możesz je śmiało włączyć (aczkolwiek towarzysz Stalin mawiał: „Kontrola najwyższą formą zaufania” – więc dla pewności możesz uruchamiać te makra na jakiejś maszynie wirtualnej 😉

Jeśli zobaczysz taki żółty pasek to kliknij w przycisk Włącz zawartość (ale tylko wtedy, gdy mi ufasz)

Może się pojawić również takie oto okienko dialogowe

Tutaj również możesz kliknąć w przycisk Włącz makra (zauważ, że domyślnie jest zaznaczony przycisk Wyłącz makra).

Jeśli używasz jakiejś starszej wersji pakietu Office (np. wersja 97 lub 2003) to również może się pojawić stosowny komunikat:

Może być też tak, że nic się nie wyświetli – wtedy są dwie opcje: albo makra są domyślnie wyłączane i nawet nie zobaczysz stosownego komunikatu, albo wszystkie makra są domyślnie włączane (tę ostatnią opcję gorąco odradzam).

Wróćmy do meritum! Jeśli włączyłeś obsługę makr, to możesz kliknąć w przycisk o nazwie Cześć! Jestem przyciskiem, kliknij we mnie!. Pojawi się niegroźne okienko z komunikatem jak na poniższym rysunku:

Jeśli pojawił się taki oto komunikat, to znaczy, że makra działają. Jeśli nie włączałeś makr, to pojawi się komunikat o niemożności uruchomienia makra.

Od razu mówię, że moje makra są bezpieczne. Ale gdybyś otrzymał ten plik od kogoś nieznajomego, to jaką masz pewność, że oprócz wyświetlenia komunikatu to makro np. nie kasuje losowego pliku z folderu Dokumenty? Jeśli nie wiesz co robi dane makro a plik otrzymałeś od osoby, której nie ufasz to lepiej nie włączaj makr (albo nawet nie otwieraj pliku). Albo zanim otworzysz plik i włączysz makra daj ten plik do analizy zaufanemu informatykowi.

Zwróć uwagę na jeszcze jeden fakt: jeśli zamkniesz ten plik i go ponownie otworzysz to już drugi raz nie zobaczysz informacji o zablokowaniu makr (chyba, że ktoś w ustawieniach odznaczy stosowną opcję). Po prostu Excel zapamiętał Twoją decyzję i zapamiętał, że plik ten jest zaufany. Jeśli chcesz ponownie zobaczyć ten komunikat to najprościej będzie przenieść plik w inne miejsce lub zmienić mu nazwę.

Makra uruchamiane automatycznie wraz z otwarciem dokumentu

W poprzednim pliku kliknięcie w przycisk uruchamiało niedestrukcyjne makro. Zauważ, że dopiero po kliknięciu w przycisk makro się wykonało. No, ale można napisać takie makro, które się uruchamia w momencie otworzenia pliku (w przypadku Excela należy treść makra napisać wewnątrz procedury Workbook_Open a w przypadku Worda będzie to procedura Document_Open). Jeśli chcesz przetestować to rozwiązanie, to otwórz plik Makro2 – autoopen.xlsm lub Makro2b – autoopen.docm.

Oczywiście tutaj również powinno się pojawić ostrzeżenie (ten żółty pasek). Ale jak klikniesz w przycisk Włącz makra/włącz zawartość to odrazu wykona się makro.

Dodatkowe funkcje w Excelu

Jak już wcześniej wspominałem: Excel posiada ponad 400 różnych funkcji. Pewnie znasz takie funkcje jak SUMA, MIN, MAX, JEŻELI, LICZ.JEŻELI, SUMA.JEŻELI, WYSZUKAJ.PIONOWO.

Za pomocą tych funkcji można zaprojektować arkusze, które wykonują wiele przydatnych obliczeń, bądź przekształceń, ale czasami przydałaby się jakaś funkcja, która wykonuje jakąś mniej typową rzecz. Przykładowo używam Excela do wystawiania faktur. Ponieważ osobiście wystawiam kilka faktur miesięcznie, więc nie odczuwam potrzeby używania jakiegoś dodatkowego programu.

Niestety, ale w Excelu nie ma funkcji, która zamienia liczbę na jej słowny odpowiednik (czyli w komórce B2 znajduje się liczba – kwota brutto na jaką wystawiłem fakturę a ja chcę, aby poniżej była zapisana ta kwota słownie). No ale od czego są makra. Jeśli ktoś zna dobrze język Visual Basic for Applications (VBA) to w kilka chwil może napisać własną funkcję, która wykonuje to zadanie. Jeśli nie znamy języka VBA to możemy albo spróbować znaleźć w Internecie taką funkcję, albo znaleźć jakiegoś programistę, który za nas napisze taką funkcję.

Jak zaimportować taką funkcję znalezioną w Internecie do swojego arkusza opisałem w notce Dodawanie nowej funkcji do programu Excel znalezionej w Internecie. Jeśli nie chcesz ręcznie wykonywać tego ćwiczenia, możesz od razu otworzyć plik Makro3 – funkcja slownie.xlsm. Zwróć uwagę, że w komórce B3 znajduje się funkcja =slownie(B2), która normalnie nie występuje w Excelu (jest ona dostępna tylko w tym konkretnym pliku).

Centrum zaufania

Wcześniej wspominałem, że zazwyczaj po otworzeniu pliku zawierającego makra pojawia się „żółty pasek z ostrzeżeniem”. Jednak nie zawsze tak się dzieje. Otóż w korporacjach może być tak, że dość często pracownicy otrzymują różne rozbudowane arkusze zawierające makra wspomagające pracę i z wygody koszem bezpieczeństwa domyślnie wyłączają to ostrzeżenie.

Nie jest to zbyt dobre rozwiązanie, gdyż owszem podczas otwierania pliku możemy zaoszczędzić czas potrzebny na kliknięcie w jeden przycisk, ale jeśli przez nieuwagę otworzymy plik zawierający szkodliwe makro to nie zobaczysz ostrzeżenia, tylko od razu może się uruchomić makro, które „zrobi nam kuku”.

Dlatego warto jest sprawdzić kilka ustawień w Centrum zaufania. W tym celu kliknij w kartę Plik a następnie wybierz polecenie Opcje. Pojawi się okno dialogowe Opcje programu Excel (lub Word etc.)

Następnie w lewej części okna kliknij w zakładkę Centrum zaufania a następnie po prawej stronie kliknij w przycisk Ustawienia Centrum zaufania. Pojawi się okno dialogowe Centrum zaufania. Wybierz zakładkę Ustawienia makr.

Mamy tutaj cztery poziomy bezpieczeństwa do wyboru:

  • Wyłącz wszystkie makra i nie wyświetlaj powiadomień – jeśli po wybraniu tej opcji otworzysz plik zawierający makro, to makra nie zostaną uruchomione. Również nie zobaczysz „żółtego paska z ostrzeżeniem”. Ta opcja jest zalecana, jeśli na danym stanowisku pracy pracuje osoba „mało techniczna”, która nie będzie miała potrzeby pracy na plikach zawierających makra. Wada jest taka, że nigdy żadne makro nie zostanie uruchomione, natomiast to rozwiązanie ma jedną wielką zaletę: drastycznie zmniejszasz ryzyko, że dana osoba otworzy jakiś niebezpieczny plik „i coś zepsuje”.
  • – domyślnie po zainstalowaniu pakietu MS Office ta opcja jest wybrana. Jeśli otworzysz plik zawierający makro, to zobaczysz „żółty pasek z prośbą o włączenie makr”. Według mnie jest to najlepszy wybór
  • Wyłącz wszystkie makra oprócz makr podpisanych cyfrowo – myślę że tutaj nie muszę za wiele wyjaśniać. Pakiet MS Office będzie uruchamiał tylko te makra, które są podpisane cyfrowo (przydatne w dużych firmach aczkolwiek zdecydowana większość programistów amatorów nie ma wyrobionego podpisu cyfrowego i z tego powodu nie mogą podpisywać swoich makr (czyli większość makr nie będzie działać)
  • Włącz wszystkie makraopcja dla samobójców 😉 A tak na poważnie – jeśli domyślnie są włączone wszystkie makra to otwierając plik zawierający szkodliwy kod – nie pojawi się ostrzeżenie a makro może zostać automatycznie wykonane po otworzeniu pliku.

Mamy dodatkowo domyślnie niezaptaszkowaną opcję: Ufaj dostępowi do modelu obiektowego projektu VBA. Cóż to za dziwne ustawienie? Otóż niektóre makra mogą np. do innych plików (dokumentów) dodawać inne makra (w ten sposób działają makrowirusy). W zdecydowanej większości przypadków typowe makra raczej nie potrzebują wykonywać tego typu rzeczy, więc warto jest się upewnić, że ta opcja jest wyłączona.

Uwaga: dla każdego programu pakietu Office (Access, Word, Excel, PowerPoint, Outlook) należy przeglądnąć ustawienia Centrum zaufania. Te ustawienia NIE są globalne dla całego programu Office a jedynie dla jednej wybranej aplikacji. Przykładowo: jeśli masz włączonego Excela i w centrum zaufania wybierzesz opcję Wyłącz wszystkie makra i nie wyświetlaj powiadomień to otwierając plik Wordowy prawdopodobnie zobaczysz żółty pasek z prośbą o włączenie makr.

Zaufane lokalizacje

W oknie dialogowym Centrum zaufania znajduje się zakładka Zaufane lokalizacje. Do czego ona służy? Otóż jeśli często otwierasz dokumenty z pewnego folderu (może być np. folder na dysku sieciowym gdzie współpracownicy wrzucają „wspólne dokumenty”) i masz zaufanie do swoich współpracowników, to możesz daną lokalizację uznać za bezpieczną. Wtedy np. Excel nie będzie niepotrzebnie zadawał pytania o zgodę na włączenie makr.

Dodając odpowiednią lokalizację (np. dysk D, pendrive) możesz również zdecydować, czy podfoldery tej lokalizacji również mają być zaufane.

Uwaga: tutaj również należy pamiętać o tym, że jeśli dodasz daną lokalizację w ustawieniach programu Excel, to trzeba będzie to samo zrobić w ustawieniach programu Word.

Widok chroniony

Ostatnia zakładka, którą chcę omówić, jest to Widok chroniony. W skrócie: zalecam, aby u Ciebie te 3 pierwsze opcje były zaznaczone

Pewnie zastanawiasz się, czym jest ten widok chroniony. Otóż, gdy otwieram pliki pobrane z Internetu (nawet te nie zawierające makr) to pojawia się często żółty pasek z informacją, że plik został włączony w widoku chronionym. Taka sama sytuacja występuje, gdy dany plik był załącznikiem w programie pocztowym i go zapisałeś na dysku.

Gdy otworzysz pliki w widoku chronionym, to są one tylko do odczytu (wszystkie ikonki na wstążce są nieaktywne) do czasu aż nie klikniesz w przycisk Włącz edytowanie. Również nie można wydrukować pliku do czasu, aż nie wyłączysz widoku chronionego.

W przypadku widoku chronionego w pliku są zablokowane pewne funkcjonalności np. nie wyświetlają się grafiki osadzone w dokumencie z zewnętrznych serwerów. Natomiast jeśli plik pobrałeś z Internetu i zawiera on dodatkowo makra, to najpierw zobaczysz komunikat o tym, że plik został otworzony w widoku chronionym, a gdy klikniesz w przycisk Włącz edytowanie to dodatkowo wyskoczy drugie ostrzeżenie z informacją, że makra zostały wyłączone (można je będzie włączyć klikając w przycisk Włącz makra).

Uwaga: (dygresja dla osób bardziej technicznych) jeśli dany dysk na którym zapisałeś plik pobrany z Internetu/poczty jest sformatowany w systemie plików FAT, FAT16, FAT32 bądź exFAT (nośniki pendrive i karty pamięci często są formatowane w systemie plików exFAT) to wtedy pliki pobrane z Internetu nie są pokazywane w widoku chronionym.

Zachęcam do przeglądnięcia również innych zakładek w oknie dialogowym Centrum zaufania, natomiast te opcje, które tutaj opisałem uważam za warte przejrzenia w pierwszej kolejności.

Parę słów o rozszerzeniach plików

Jeśli zapisujemy na dysku jakiś plik, to oprócz nazwy ten plik ma rozszerzenie. Właśnie na podstawie rozszerzenia system operacyjny wie, jaki program ma otworzyć ten plik, gdy dwukrotnie w niego klikniesz.

W pakiecie MS Office od wersji 2007 wymyślono, że domyślnie makra nie są zapisywane. Otóż mając starego Worda, jeśli zapisałeś dokument z rozszerzeniem DOC, to w pliku DOC mogły być makra. W nowszych wersjach Worda domyślny format zapisu to DOCX. Pliki DOCX nie mogą zawierać makr, więc „teoretycznie są bezpieczne”. Jeśli utworzysz nowy dokument Worda i będzie on zawierał makra, to chcąc zapisać dokument w formacie DOCX zobaczysz stosowny komunikat.

Jeśli klikniesz w przycisk Tak, dokument zostanie zapisany bez makr. Jeśli klikniesz w przycisk Nie, będziesz mógł go zapisać w pliku z rozszerzeniem DOCM. Pliki z rozszerzeniem DOCM mogą zawierać makra.

Tak więc jeśli wysyłasz komuś dokument wordowy, który nie zawiera makr koniecznie zapisz go z rozszerzeniem DOCX. Nie zapisuj plików z rozszerzeniem DOC jak to często bywa w różnych urzędach (tak wiem, jak ktoś ma archaicznego Worda w wersji 2003 lub starszej to nie otworzy tego pliku, ale na Boga! używanie programu w wersji sprzed 20 lat jest proszeniem się o kłopoty. Dokumenty z rozszerzeniem DOC można było zapisywać jeszcze 10 lat temu tłumacząc sobie, że niedofinansowane firmy nie mają najnowszych wersji programów, ale ludzie! mamy obecnie rok 2021 a nie 2011!)

Oto prosta tabelka przedstawiająca rozszerzenia plików

RozszerzenieTyp plikuCzy może zawierać makra
Word
DOC„Stary” WordTAK
DOCXWordNIE
DOCMWordTAK
DOTSzablon „dla starego” WordaTAK
DOTXSzablon programu WordNIE
DOTMSzablon programu WordTAK
Excel
XLS„Stary” ExcelTAK
XLSXExcelNIE
XLSMExcelTAK
XLSBExcel – plik binarnyTAK (!)
XLTSzablon „dla starego” ExcelaTAK
XLTXSzablon programu ExcelNIE
XLTMSzablon programu ExcelTAK
PowerPoint
PPT„Stary” PowerPointTAK
PPTXPowerPointNIE
PPTMPowerPointTAK
POTSzablon „dla starego” PPTAK
POTXSzablon PPNIE
POTMSzablon PPTAK
PPS„Stary” Pokaz PPTAK
PPSXPokaz programu PPNIE
PPSMPokaz programu PPTAK

Podsumowując – pliki z trzyliterowymi rozszerzeniami są przeznaczone dla starszych wersji programów pakietu MS Office i mogą zawierać makra. W przypadku czteroliterowych rozszerzeń plików, jeśli plik kończy się na literkę X to „jest bezpieczny”, natomiast jeśli kończy się na literkę M to może (ale nie musi) zawierać makra.

Zwróć uwagę, że w przypadku Excela czasami możesz się spotkać z rozszerzenie pliku XLSB – jeśli skoroszyty zawierają na tyle dużo danych, że program Excel się zacina to zapisanie skoroszytu z tym rozszerzeniem może przyśpieszyć pracę Excela, ale zwróć uwagę na fakt, że pliki z tym rozszerzeniem mogą zawierać makra!

Pokazywanie rozszerzeń plików

Domyślnie po zainstalowaniu Windowsa system ukrywa rozszerzenia znanych typów plików. Ze względu na bezpieczeństwo zachęcam do tego, aby jednak te rozszerzenia były pokazywane.

Aby to zrobić, wystarczy wejść do dowolnego folderu a następnie kliknij na kartę Widok i zaptaszkuj pole Rozszerzenia nazw plików.

Dlaczego warto jest pokazywać rozszerzenia plików? Otóż teoretycznie pliki „niebezpieczne” tj. te mogące zawierać makra mają ikonkę „z wykrzyknikiem”. Utworzyłem u siebie kilka plików o nazwach takich jakie mają rozszerzenia i wyłączyłem pokazywanie rozszerzeń. Zgadnij, które z nich mogą zawierać makra (w zależności od zainstalowanej wersji pakietu MS Office te ikonki mogą być nieco inne).

Większość plików z czteroliterowym rozszerzeniem, które ma w nazwie m na końcu niby ma ikonkę z wykrzyknikiem, ale:

  • Pliki z trzyliterowym rozszerzeniem mogą być niebezpieczne i zawierać makra a zwróć uwagę, że mają zwykłą ikonkę (bez wykrzyknika)
  • Plik z rozszerzeniem XLSB (binarny skoroszyt Excela) wygląda jak „normalny” (bezpieczny) plik Excelowy a może mieć makra
  • Pliki z PowerPointa wyświetlają się jako miniaturki pierwszego slajdu i żaden z nich nie ma ikonki wykrzyknika!

Podsumowując: dla własnego bezpieczeństwa warto mieć włączone pokazywanie rozszerzeń plików. Mało tego: ja jako zły programista mogę przecież napisać zwykły program i skompilować do go pliku wykonywalnego EXE nadając mu ikonę przypominającą plik Worda. Pliki EXE mogą wykonać dowolny kod bez pytania się użytkownika o zgodę. Mało tego mogę plikowi nadać nazwę np. Zwykła faktura.docx.exe i osoba, która nie ma włączonego pokazywania rozszerzeń nazw plików zobaczy plik o niewinnej nazwie Zwykła faktura.docx z ikonką przypominającą dokument programu Word (taki plik wykonywalny również znajduje się w archiwum, które pobrałeś na początku czytania tego artykułu).

A co, jeśli zmienię rozszerzenie pliku?

Niejeden haker pomyślał sobie, że przecież wystarczy zmienić rozszerzenie pliku z groźnego XLSM na XLSX i wysłać na maila do ofiary. Tutaj sprytny atak się nie powiedzie, gdyż program Word/Excel nie otworzy takiego pliku. Przy próbie otworzenia takiego pliku pojawi się komunikat, że plik jest uszkodzony (możesz to sprawdzić samodzielnie próbując otworzyć plik kuku.xlsx; dopiero jak zmienisz mu nazwę na kuku.xlsm będziesz mógł otworzyć ten plik).

Ale ja mam antywirusa!

Ktoś kiedyś mi zadał takie pytanie: Jeśli mógłbyś mi udzielić tylko jedną wskazówkę, która pozwoli zwiększyć swoje bezpieczeństwo podczas korzystania z Internetu, to jak by ona brzmiała?

Wbrew pozorom nie udzieliłem odpowiedzi w stylu: „Zainstaluj program antywirusowy z włączoną aktualizacją definicji wirusów”. Moja odpowiedź była krótsza: „używaj mózgu”.

Owszem programy antywirusowe chronią nas przed wieloma zagrożeniami (pod warunkiem, że są włączone i zawierają w miarę aktualne definicje wirusów). Przykładowo, gdy napisałem na swoje potrzeby proste makro pobierające plik EXE z Internetu to po otworzeniu makra na innym komputerze zobaczyłem taki oto piękny komunikat

Należy jednak pamiętać, że żaden nawet najlepszy program antywirusowy nie wykrywa 100% zagrożeń. Nawet jeśli producent chwali się skutecznością rzędu 99,99% zawsze zostaje ta jedna setna procenta zagrożeń, których dany program nie wykryje i odpowiednio nie zareaguje! Są też inne powody za tym, aby "używać mózgu":

  • Czasem użytkownicy wyłączają programy antywirusowe, bo obawiają się, że program za bardzo spowalnia pracę komputera itp.
  • „Raz na ruski rok” może się zdarzyć, że program antywirusowy „się zawiesi” i przez chwilę będziesz bez ochrony
  • Osoba, która Ciebie atakuje może spróbować Ciebie przechytrzyć

Ten ostatni punkt jest wart rozwinięcia. Otóż większość serwerów pocztowych skanuje załączniki pod kątem istnienia wirusów. I jeśli w wiadomości znajduje się wirus to taka wiadomość zostaje skasowana. Jak przechytrzyć skaner antywirusowy? Bardzo prosto: można szkodliwy plik skompresować (np. do formatu zip lub rar). Tutaj jednak to za wiele nam nie da: chyba każdy skaner antywirusowy domyślnie skanuje również pliki znajdujące się w archiwach. Ale można przechytrzyć taki skaner – otóż można skompresować plik z hasłem i w mailu podać hasło do owego archiwum. Wtedy skaner znajdujący się na serwerze pocztowym nie przeskanuje archiwum (gdyż nie zna hasła do jego rozpakowania) a użytkownik może nie mieć na swoim komputerze zainstalowanego programu antywirusowego i bez mrugnięcia okiem wykona instrukcje znajdujące się w wiadomości.

Czy wiesz, że pliki z rozszerzeniem DOCX mogą zawierać makra?

Wcześniej pisałem, że pliki z czteroliterowym rozszerzeniem z literką X na końcu nie mogą zawierać makr, więc są bezpieczne. I teoretycznie tak jest. Ale nie do końca! Otóż jest pewna sztuczka, która powoduje, że plik DOCX ładuje szablon z zewnętrznego serwera a ten szablon zawiera makra! Mało tego – makro może się uruchomić wraz z otworzeniem dołączanego dokumentu szablonu, czyli wraz z otworzeniem naszego niby bezpiecznego pliku DOCX.

Jeśli chcesz zobaczyć, jak to działa, otwórz plik o nazwie Ten plik DOCX zawiera makra.docx

Dlatego moja rada: używaj mózgu jest jak najbardziej aktualna!

A co jeśli używam OpenOffice / LibreOffice?

Tutaj sprawa jest dość złożona. Otóż LibreOffice ma swój własny język makr: OO/LO Basic (makra możemy jeszcze pisać w takich językach jak JavaScript, BeanShell i Python). Zarówno język VBA jak i OO/LO Basic mają wspólnego przodka więc podstawowa składnia (pętle, instrukcje warunkowe itp.) jest taka sama. Różnice składniowe są jednak w momencie, gdy chcemy się odwołać do różnych obiektów np. komórek w aktywnym arkuszu. Tak więc chcąc zaatakować osobę nie używającą pakietu MS Office musielibyśmy wysłać plik ODS (Calc) lub ODT (Writer) z makrem napisanym w nieco innym języku programowania.

Pakiety biurowe Open Office / Libre Office potrafią interpretować kod napisany w języku VBA, ale w dość ograniczonym zakresie. Pootwierałem kilka przykładowych plików XLSM i nie wszystkie moje makra działały, a po zapisaniu zmian w pliku niektóre rzeczy się pouszkadzały. Tak więc chcąc napisać niebezpieczne makro w języku VBA, które atakowałoby osoby używające zamienników pakietu MS Office należałoby dokonać pewnych poprawek w kodzie, tak aby makro było kompatybilne z OO/LO interpreterem VBA. Tak więc jeśli używasz pakietu Libre Office (lub Open Office) to możesz czuć się nieco bezpieczniej niż użytkownik pakietu MS Office (no chyba, że przestępca testował też swoje szkodliwe makra w OO/LO).

Natomiast dwa słowa odnośnie bezpieczeństwa. Otóż, gdy pierwszy raz otworzyłem plik z makrami (zarówno plik z makrami VBA jak i makrami napisanymi w OO/LO Basic) pojawiło się takie oto ostrzeżenie (makra nie zostały uruchomione):

No cóż, musiałem wejść do menu Narzędzia -> Opcje. Następnie pojawiło się okno dialogowe Opcje Libre Office. Z menu po lewej stronie z sekcji LibreOffice należy wybrać zakładkę Bezpieczeństwo. Następnie po prawej stronie okna dialogowego należy kliknąć w przycisk Ochrona makr.

I tutaj ciekawostka: zarówno w OpenOffice jak i w LibreOffice był wybrany poziom Wysoki (czyli mogą być uruchamiane makra podpisane podpisem cyfrowym i tylko z zaufanych źródeł). Aby można było korzystać z własnych makr (nie posiadam swojego podpisu) należy zmienić ustawienie na Średni.

Po tych zmianach w końcu mogę korzystać z własnych makr. Gdy ponownie otworzyłem plik zawierający makra zobaczyłem taki oto komunikat:

Makra i MacOS

Janek spotyka Marka i mu mówi:
– A wiesz, że na komputerach Apple nie ma wirusów?
Marek mu ripostuje:
– Są, ale tylko płatne!

Ten świetny dowcip może sugerować, że mając komputer z jabłuszkiem możemy czuć się bezpieczni. Po części masz rację komputery te są mniej popularne od zwykłych pecetów z Windowsem więc twórcy wirusów wolą pisać wirusy na tę platformę, która ma najwięcej użytkowników. Dodatkowo sama budowa systemu Mac OS powoduje, że trudniej jest napisać na nią wirusa niż na Windowsa. No ale będąc w temacie makr powiem, że pakiet MS Office dla komputerów Apple obsługuje makra (w pewnym ograniczonym zakresie). Wiadomo, że WinAPI na MacOS nie działa, nie możemy również korzystać z takich rozwiązań jak FileSystemObject czy też niestandardowych kontrolek OCX. Tak więc napisanie szkodliwego makra wydaje się być zadaniem trudniejszym, ale jak wiadomo dla zdolnego nic trudnego 😉

Po otworzeniu pliku zawierającego makra zobaczymy znajomy komunikat

Po kliknięciu w przycisk Enable Macros zobaczymy taki oto wesoły komunikat:

Przykład z życia wzięty

Pewnie zastanawiasz się, dlaczego tak wiele pisze o bezpieczeństwie makr. Otóż kilka miesięcy temu zadzwonił do mnie znajomy, że jego ciotka prowadzi pewien mały pensjonat i zepsuł się jej komputer a on nie ma czasu się tym zająć, gdyż w tym dniu prowadził jakieś szkolenie. Myślę sobie: zobaczę „o co biega”, pewnie z godzinkę coś pogrzebię i wzbogacę się o kilka złotych monet. Jak tylko zobaczyłem komputer na recepcji w mojej głowie pojawiła się myśl „o k****”.

Na pulpicie była tapeta z informacją, że dane na komputerze zostały zaszyfrowane. Aby odszyfrować pliki należało wpłacić okup w bitcoinach (cyfrowa waluta). Wartość okupu opiewała na kilka tysięcy złotych. Szczęście w nieszczęściu, że pensjonat wszystkie rezerwacje ewidencjonował „na papierze”. Tutaj sprawa była prosta: ponieważ komputer służył głównie do odpisywania na e-maile (poczta na szczęście była przechowywana na serwerze) więc wystarczyło przeinstalować system operacyjny, zainstalować pakiet MS Office i skonfigurować Outlooka. Żadne ważne dane nie były przechowywane na komputerze (pomyśl sobie co by było, gdyby rezerwacje były ewidencjonowane np. w arkuszu Excela, który zostałby zaszyfrowany).

Po krótkiej rozmowie z pracownikiem ustaliłem scenariusz ataku:

  • Na pocztę przyszła wiadomość z prośbą o opłacenie zaległej faktury (mail był napisany w takim tonie, aby ten biedny człowiek się zestresował i najpierw otworzył wezwanie do zapłaty a dopiero potem pomyślał jakie głupstwo zrobił)
  • W załączniku był plik zawierający makro
  • Pracownik otworzył plik z załącznika i włączył obsługę makr
  • Makro pobrało z Internetu plik wykonywalny (EXE), który od razu został uruchomiony.
  • Plik pobrany przez makro to był program szyfrujący wszystkie dokumenty na dysku twardym. Po zakończeniu szyfrowania wyświetlił stosowny komunikat.

Jak można było temu zapobiec? Prosta sprawa: pracownik nie powinien otwierać owego wezwania do zapłaty a nawet jeśli je otworzył to nie powinien włączać obsługi makr. Jeśli istniałby cień szansy, że firma nie opłaciła jakiejś faktury plik z makrami powinien zostać przesłany do kogoś, kto jest obeznany w temacie i potrafi przeanalizować co może zrobić dane makro bez jego uruchamiania (od razu dopowiem: zwykłego pracownika biurowego (takiego, który nie jest programistą) nie da się przeszkolić w weekend z zakresu analizy makr, gdyż jest to temat dość obszerny).

Pewnie część osób, które czytają ten wpis myślą sobie: jaki głupi był ten pracownik. Ale zastanów się: ilu pracodawców organizuje w firmach (szczególnie w tych mniejszych) szkolenia z zakresu cyber-zagrożeń?

W tym miejscu należy poruszyć jeszcze jeden temat: w każdej firmie należy wykonywać regularnie kopie bezpieczeństwa najlepiej na dwóch niezależnych nośnikach (np. zewnętrzny dysk twardy, który NIE jest na stałe podłączony do komputera i chmura) gdyż nigdy nie wiemy czy ktoś nie otworzy złośliwego makra z wirusem, albo np. na skutek przepięcia w sieci dysk twardy ulegnie uszkodzeniu. Temat dotyczący wykonywania kopii bezpieczeństwa jest dość obszerny, abym mógł go tutaj skrótowo opisać dlatego odsyłam Ciebie na inny blog InformatykZakładowy.pl gdzie to zagadnienie zostało obszernie opisane.

Podsumowanie (wersja TLTR)

  • Nie każde makro musi być wirusem (ale może)
  • Nie włączaj makr, jeśli nie masz zaufania do osoby, która Ci ten plik wysłała
  • Nie włączaj makr, jeśli nie masz pewności czy ten e-mail od Janka faktycznie został napisany przez Janka (komputer Janka mógł zostać zainfekowany wirusem i teraz wszystkie osoby z jego książki adresowej otrzymują wiadomości z szkodliwymi załącznikami)
  • Upewnij się, czy w centrum zaufania masz wybraną opcję Wyłącz makra i wyświetlaj powiadomienie lub Wyłacz wszystkie makra i nie wyświetlaj powiadomień
  • Nie klikaj we wszystko co się rusza, tylko używaj mózgu
  • Jeśli zobaczysz plik z rozszerzeniem DOCM, XLSM, PPTM, PPSM, POTM to zachowaj czujność
  • Pliki z rozszerzeniami XLSB, DOC, XLS, PPT, POT, PPS również mogą zawierać makra!
Jeśli artykuł Ci się podobał, będę wdzięczny gdy go udostępnisz w mediach społecznościowych
Ten wpis został opublikowany w kategorii Bezpieczeństwo i oznaczony tagami , , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Jedna odpowiedź do Dwa słowa o makrach i bezpieczeństwie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.