Exchange MessageTracking like a Ninja

7 września 2017 at 19:49

Dzisiaj na tapetę weźmiemy Message Tracking czyli przeszukiwanie logów poczty Microsoft Exchange dotyczących maili krążących pomiędzy serwerami pocztowymi. Niby temat znany i na pierwszy rzut oka niewiele więcej odkrywczego w nim można napisać, ale jestem przekonany że prezentowana treść może się przydać w niejednym przypadku Standardowe podejście w przypadku Message Trackingu to odpalenie w sesji Powershella z połączeniem do serwerów Exchange’a polecenia w stylu:

Ewentualnie dodanie warunków zawężających przeszukiwanie (np. data początku, data końca, Event SMTP itd.) O ile w przypadku konkretnego adresu e-mail nadawcy lub odbiorcy sprawa jest banalnie prosta bo wystarczy wykonać polecenia w stylu:

O tyle w przypadku chęci wyszukiwania wiadomości mailowych wysłanych lub odebranych z całej domeny pocztowej ‚X’ ulega znacznej komplikacji. Dlaczego? Ano dlatego, że nie ma stosownego przełącznika określającego domenę. Ba nie ma nawet stosownego filtra, więc trzeba wykorzystać coś z czego każdy świadomy Administrator korzysta w ostateczności = warunek „where” – nie tego Tygryski zdecydowanie nie lubią

W przypadku naprawdę dużych środowisk pocztowych i szerokiego zakresu wyszukiwania należy oczekiwać, że zapytanie potrwa kilka godzin jeśli nie dni a przy okazji możemy otrzymać Out-Of-Memory… A co jeśli np. potrzebujemy wykonać Message Tracking dla kilkudziesięciu różnych domen pocztowych? Kleić „like” w […]

Testowanie SCEP z poziomu Powershell’a

21 czerwca 2017 at 08:05

SCEP (ang. Simple Certificate Enrollment Protocol ), chociaż wbrew nazwie konfiguracja nie zawsze jest prosta łatwa i przyjemna 0 cóż taki żywot Aby lepiej zrozumieć czym jest i jak działa polecam zapoznanie z filmikiem: SCEP Natomiast co do sedna – Po instalacji i konfiguracji przydałoby się przetestować poprawność działania. Nie potrzeba wcale wykorzystywac urządzenia sieciowego – można do tego celu zaprząc po prostu Powershella. Poniżej opis How-To: Przygotowanie pliku tekstowego do wygenerowanie requestu o certyfikat np:

Wygenerowanie Requestu SCEP ( gdzie username to użytkownik domenowy uprawniony do wnioskowania o certyfikaty SCEP a przełącznik -p to jego hasło) Poniżej poprawna odpowiedź SCEP: Oraz zawartość wygenerowanego pliku żądania: Wysłanie Requestu do PKI i odebranie automatycznie podpisanego nowego certyfikatu: Status „SCEPDispositionSuccess(0)” oznacza, że wszystko działa poprawnie i odebraliśmy swój certyfikat ze SCEP’a Teraz można wykorzystać swój certyfikat, który pojawił się we wskazanym wcześniej miejscu:   Enjoy P.S. Aby wystawianie certyfikatów za pomocą SCEP działało automatycznie bez konieczności generowania haseł wymagana jest zmiana w rejestrze – ale o tym jaka w kolejnym wpisie

Data Mining w skrzynce pocztowej z użyciem obiektów COM – zajawka

28 marca 2017 at 21:48

Sytuacja awaryjna – tysiące wiadomości e-mail na skrzynce pocztowej, na które trzeba odpowiedzieć w krótkim czasie jedną uniwersalną wiadomością. Niestety o autoresponderze (Out-Of-Office) lub o regule na skrzynce pocztowej nikt nie pomyślał wcześniej, o regule transportowej na Exchange’u już nie wspominając… Mamy w zasadzie 2 alternatywy: Odpowiadać na wszystkie wiadomości po kolei (albo zbiorczo) z GUI, przy czym problematyczne będzie tutaj upchanie różnych odbiorców w pole BCC (UDW) Zebrać informację o nadawcach wiadomości i wysłać zbiorczego maila dodając ich wszystkich do pola BCC. Problem jest w zasadzie tylko z „zebraniem nadawców”. Można próbować kopiować, eksportować maile, cuda wianki ale zajmuje to mnóstwo czasu a i efekt mizerny.   Podejdźmy do tego jak na administratora przystało – użyjmy Powershella 😉 Wykorzystamy do tego obiekty COM’owe Outlooka. Szybkie googlowanie da podpowiedzi w stylu:

Po wykonaniu zonk – niemiła niespodzianka:

Inne odmiany z Load Assembly również zwracają ten sam błąd… A jakie jest rozwiązanie? Jak zwykle trywialne Outlook na 99% w wersji 32-bitowej a Powershell uruchomiony standardowo w wersji 64-bitowe i tu jest zgrzyt. Wystarczy uruchomić Powershella x84 I obiekt COM’owy nie okrzyczy nas już błędami Reszta jest już prosta, łatwa i przyjemna (jeśli ktoś jest zaznajomiony z programowaniem obiektowym i […]

Subject Alternative Names w Enterprise Certification Authority

20 stycznia 2017 at 10:26

Wdrożenie nowego urzędu certyfikatów (CA) w wersji Enterprise Issuing CA poszło bez większych problemów. Standardowe testy requestów, szablonów, wystawienia certyfikatów zostały zaakceptowane, po czym po kilku dniach okazało się, że jest problem z „częścią” atrybutów requestu, które są „wycinane” lub nie są akceptowane… Konkretnie chodziło o SAN (Subject Alternative Names), czyli właściwość pozwalającą na wpisanie wielu nazw DNS do jednego certyfikatu. Jest to przydatne w scenariuszach, gdy na jednym adresie IP/nazwie DNS mamy wystawionych wiele różnych stron www lub przypisanych wiele serwerów obsługujących daną aplikację korzystającą z certyfikatów. Standardowa procedura – sprawdzenie czy requestujący na pewno wprowadza pole SAN – wprowadza. Wystawienie certyfikatu bez problemów. Eksport – pola nie ma… Próbujemy przez portal \certsrv – wypełniamy pole „Attributes” i efekt jest nadal taki sam… Okazuje się że standardowo Enterprise CA uniemożliwia korzystanie z SAN, więc trzeba pogrzebać w politykach Sprowadza się to do wykonania 2 czynności: certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 Restartu usług urzędu certyfikacji I już „działa” Mimo, że Microsoft nie zaleca na poziomie Enterprise CA wykorzystywać SAN, jednak życie często pisze własne scenariusze i własne potrzeby…

Wieloskładnikowe uwierzytelnianie w Powershell

20 stycznia 2017 at 10:08

Czasami/Często albo nawet i częściej niż często zachodzi konieczność przekazania komuś kompetencji w zakresie danej technologii. Gdy tylko jest to możliwe odbywa się to poprzez delegację uprawnień na poziomie aplikacji. Niestety nie zawsze jest to możliwe i zdarzają się sytuacje, w których nie można/nie da się (lub nie jest to wygodne) wydelegować uprawnień. Wtedy zazwyczaj pojawia się konieczność wydelegowania uprawnień w ramach jakiegoś konta ‚X’ i przekazania poświadczeń tego konta do grupy użytkowników celem wykonania swoich zadań. Właśnie w tym miejscu pojawia się problem jak zrobić to dobrze aby uniknąć hardcodowania haseł w treści skryptów:

Nie tędy droga – nie idźmy nigdy tą drogą błagam Hasło czystym tekstem w skrypcie to nie jest dobry pomysł. NIGDY! Natomiast próby jego „ukrywania” czy „zaciemniania” są zawsze tylko półśrodkami. Zabieg zapisania hasła w formie:

Może i utrudnia odczytanie takiego hasła wprost, ale umówmy się że nie stanowi najmniejszego problemu aby zrobić „reverse-engeneering” i wyciągnąć hasełko Kolejnym sposobem jest wykorzystanie Secure-String. Pomysł lepszy, ale nadal to szyfrowanie jest słabe i stosunkowo prosto odczytywalne:

Wystarczy wykonać:

I już znamy hasło w postaci czystego tekstu. A dodatkowo w przypadku chęci skorzystania z zapisanych poświadczeń na innej stacji odbijemy się od komunikatów o […]

© Marcin Krzanowicz