 Cześć wszystkim, jestem Marek Kędzierski. Przedm pracowałem w RedHead w Wyrtajo w teamie. Dzisiaj będę rozmawiać o wypośredniowaniu wody w górze kwiatów KBM, QMU i WINDyBG. Przedm zacznę mówić o technicznych detałach. Po pierwsze, proszę wypowiedź bardzo szybko agenda na tę prezentację, ponieważ tę prezentacją jest limitowana w tym czasie, więc ta prezentacja jest w ogóle generalna generalnie, a to skończyło się z 4 części. Pierwsza jest zrozumieć, kiedy zrozumiem problemy. Zrozumiem, że następna część jest inwestycją, w której przedstawię, jak udało mi się zrozumieć zainteresowanie. To jest druga część tej prezentacji. I w końcu zresztą zrozumieć limitacje. Więc po prostu zacznijmy z introdukcji, z problemem definicji. Jakie problemy mamy tutaj? Problem jest zabawianie Windows OS, który jest bezpieczny, zabawianie WinDBG. Dlaczego WinDBG? WinDBG jest tylko native Windows kernel debugger, który jest używany przez Windows developerów i też bezpieczeństw, researchi i wszyscy, którzy robią jakieś silne działanie na Windows. Problem jest, że gdy mamy pewne pewne spektualne spektualne spektualne except regular antiOS kernel, there is another one that is called secure kernel. Secure kernel is much more secure than general Windows kernel and it's also assist HyperV to make system more secure. And this particular kernel cannot be debugged even when we have WinDBG enabled and secure boot disabled. However, in order to understand how the whole system is working or how particular VBS features are working together and I think that it's mandatory to do any debugging with WinDBG when all security features are enabled because it really can help to understand how the operating system behaves so it's something that security researchers are already doing and it can also help with general understanding and when we are working frequently because WinDBG is dedicated for Windows kernel developers, I'm talking about kernel debugger part. So it really can help with some security development or the features that are related to this, especially in the face of debugging when something is not working correctly. So why is that it's so hard? I explained already why it's so hard and why it would be good to have this feature working so have this ability to do debugging with WinDBG. Ok, so let's start the investigation phase. So basically I was assigned to some work which require understanding of VBS and because I really didn't have any information beyond that what I could find on the internet I started thinking and looking how others are debugging secure system and in this case it's really, really hard to find any decent information because most of the findings when people are presenting their findings they are not discussing how they managed to figure something out. Frequently the techniques like static analysis is mentioned and so. So it's really, really hard to get any information. So I started doing some research and over some short period of time I have found that Intel is offering some software and hardware to do debugging bare metal machines. They mentioned that their system gives ability to debug VBS so virtualization by security. So because the only thing that is mentioned on portal at least when I have found it in 2020 I think it was intersystem studio and debug extensions for WinDBG. I got, I started getting some interested in extensions debug extensions for WinDBG and you know if according to the information from Intel if it provides ability to debug secure system so it was something worth to try. So I started looking for information how to build that system for myself and here are the results of my analysis and I built the kit. The first thing and the easiest one is just a cable. The whole system is called DCI because it's for direct connect interface. It's an Intel technology for doing the debugging. It works like a JTAC on other systems so you need special cable and also enables some functionality or some hardware on the main board you are going to debug. Fortunately currently this functionality is probably in all CPUs. However by default it's blocked so even if you have a modern hardware you still can have problems with debugging. The reason is that several years ago some security researchers found some security holes in this DCI so I mean it was somehow enabling the firmware where it shouldn't be. So since this company started blocking this DCI and paid attention to this. However in order to get it working we need two things. The cable and the hardware that has unblocked in firmware DCI functionality. Ok so I spent some time looking at this and it was not that easy but finally I have found the hardware that could be used to do the debugging. It was a matter of trial and error. The picture here is just a gigabyte bricks. It's a small computer that has actually i5 processor, TPM which in my case was important for me to do some research and also firmware that has this functionality unblocked. Cable can be obtained very easily from Mouser Electronics, that's how I managed to get it and this is something that information about this is available regarding hardware it's not that easy. However I managed to have it and organize it and have it working. However the problem is that the whole system is not so stable. I mean when somebody is doing some debugging with system that has let's say secure boot only secure boot enabled there are in general no problems. It works, to some extended works. It's stable. However when somebody wants to do debugging with WinDBG when system has virtualization based security enabled it's really really hard to do for particular reasons. One of them is that when doing this debugging and let's say putting a breakpoint and then spending some time in the breakpoint then system generates a blue screen of that with synthetic watchdog bug check. I noticed that it happens only on my system it happens also on other systems when people are doing debugging with this DCI I have found this information so it's not that my system is broken or so no it exists everywhere and it has also some explanation I'm not going to talk about details because it's not that important. However it barely works maybe it works better with Linux and I have to check However not everything was wasted because I started looking at this DCI interfaces I started looking at WinDBG how WinDBG is actually doing this and how Intel is doing this i to label how is this possible that they are bypassing regular WinDBG configurations so WinDBG doesn't have to be enabled in the system to get it working. I was mainly interested in how this information from DCI is translated to the information that finally is presented in the WinDBG i to jest ktoś, kto używa WinDBG więc, tutaj jest coś co znalazłem to po prostu mówię, że wytrzymam to w red frame XDI i kilka numerów, kili, gas, data brakes XDI więc zaczęłam do tego co to jest w tym sektorze wytrzymać tę całą XDI tutaj jest tylko skutek ja znalazłem zdjęcie z oficjalną dokumentacją ponieważ tu jest jakiś oficjalny dokumentacj w związku z kodem, ale więcej o tym ale to jest tylko prezent jak w generalnie przytrzymałem to imaking to właśnie i funkcjonując to jak winwić się, co pokazuje coś podobne, jak dci ale zamek score ekz laz coś innego, gdzie dci w akcji nie jest nadal nie wylezio w przypadku QMO mamy gdb stop Tutaj jest tylko zdjęcia, która pokazuje jakieś sytuacje czy scenarii, w których interesowałem się. Mamy WinDbG i dbmEngine, a potem mamy XDI Interface, a potem mamy maszynę z XDI GDB Server Implementation Working. Więc to była idea, jak używać tego mistrza XGDI i QMO GDB Stop. Zresztą to, co ja mówię, jest, że mam znać samą samochodę, samochodą sample, która była wygrana przez Microsoft, który używają się XDI i ten samochod, nazwany XDI GDB Server Sample, może być używany na tym porozumień. I zainteresowuję, że samochod jest w tym porozumień, że już ma znać samochod XDI GDB Client Code. Więc samochodem, który mam znać samochod, ma znać samochod znać samochod znać samochod znać samochod znać samochod znać samochod znać samochod. Na przykład, ja nie naprawdę spróbowałem, ale ja znałem, że ta 32-bit wersja Windows Guest jest załatwiona. I też była tam jakaś kod, testowała i niebezpieczona dla innych architektów, innych platform. Więc zaczęłam zrobić jakieś bardzo małe modyfikacje, i patrzę na to, jak GDB Stop działa w QMO, i patrzę na cały architektyczny XDI, to znaczy informacje, które mam znaleźć w formie source code. Więc zaczęłam zrobić jakieś zmiany, a tak dalej. I w końcu, mam znać samochod 32-bit wersja Windows Working. Do pewnych względów, oczywiście, bo jeszcze nie były jakieś rzeczy w tym razie implementowane, więc byłem tylko modifying reżyserze na ręce, ale to było do pewnych punktu działać. I potem wytrzymałem się do wersji 64-bit wersji. To było trochę proste, niż 32-bit wersja. To było trochę proste. Natomiast musiałem wprowadzić problemy z reżyserami reżyserów z QMO i innych rzeczy, i też musiałem znaleźć, jak konfigurować to w porządku. Wreszcie, znalazłem to, żeby zrobić dźwięk z WindBG, używając XDI z wersji Windows wytrzymać na QMO, nie musiałem wytrzymać WindBG w wersji, i mogłem też zrobić dźwięk z pewnych funkcji, które normalnie nie jest możliwe, aby zrobić dźwięk z wersji. Kiedy chodzi o dźwięk, dźwięk jest dość prosty. Jest to specjalna wersja, która musi być wytrzymała na WindBG. Oczywiście, że dźwięk, to znaczy implementacja, czy protokol implementacji, musi być reżyserowany przed tym, a potem możemy zacząć dźwięk. Musimy też pamiętać, że musimy specyfować, aby wytrzymać dźwięk z QMO, aby wytrzymać dźwięk z WindBG. Tutaj jest tylko krótki wersja, o której wytrzymałem w wersji. To nie jest wytrzymały wersja, ale wytrzymałem to, żeby się przedstawić, że jest to możliwe, a wytrzymałem to wytrzymałem. Ponieważ prezentacja jest dość krótka, a ta szczególna opcja jest dość duża, więc musiałem tylko w bardzo, bardzo, bardzo generalny sposób. Tak, po prostu, o tym, że wytrzymałem dźwięk, wytrzymałem to, żeby wytrzymać dźwięk z wersji, aby wytrzymać dźwięk z WindBG, żeby wytrzymać dźwięk z WindBG. I też wytrzymałem, że wytrzymałem dźwięk z wersji jest trochę krótki, ponieważ trzeba specjalny wytrzymań, czyli tylko wytrzymać dźwięk z wersji, ale wszystko może być zrobione w tym sposób. Natomiast, to są wiele limitacji w tym przypadku. Pierwsza rzecz jest, że wytrzymałem dźwięk z wersji, ale wytrzymałem dźwięk z wersji, więc wiele rzeczy muszą się wytrzymać. Pierwsza rzecz jest, że nie jest tak stabilna, a czasami to się skręci, a tak dalej. Pierwsza rzecz jest, że wytrzymałem dźwięk z wersji, a musimy pamiętać też, że dźwięk z wersji nie jest wytrzymający dźwięk z dźwięk z wersji. Więc funkcjonalność, a wiele rzeczy nie ma wytrzymać. Niestety. Dlatego, że zdecydowałem, żeby wytrzymać jakieś inne informacje na mój blok, na mój blok, więc jeśli ktoś się interesuje, to może wytrzymać i zobaczyć pewne informacje, dodatkowe informacje na tym szczególnym razie. Mam nadzieję, że podobałeś mój prezent, więc dziękuję bardzo i do zobaczenia w następnym razie.