2013-04-29 12 views
10

Komodia mówi:Prawdę iniekcji DLL z aplikacji metro, Nektra vs Komodia

DLL injection is not possible with Modern UI on Windows 8,It is possible to inject DLLs into Metro apps, BUT, you will not be able to redirect Winsock traffic to localhost.

Innymi słowy okien aplikacji metro działa w piaskownicy środowiska, które zastrzyk DLL nie można zrobić .

Zobaczmy co Nektra mówi:

We realized we needed to sign our DLL with a cross-certificate, like those used to sign kernel-mode drivers. We already had a method for injecting a DLL in WinRT applications: copy the DLL file inside the System32 folder and voilá!

Jak widać Komodia i Nektra mówi się sprzeczne informacje, moje pytanie brzmi: co to jest prawda za wstrzyknięcie DLL pod Windows 8, mogę wstrzyknij mój kod do aplikacji metra jak zwykle (NT, win9x), jak mówi Nektra?

+0

Czy jesteś pewien, że pierwszy związek nie ma być interpretowany jako: „Można zrobić zastrzyk DLL, ale nie można zrobić to przekierować ruch”? – Patashu

+3

Ilekroć ktoś mówi coś "nie jest możliwe", co tak naprawdę oznacza to coś w stylu "nie powinno być możliwe" lub nawet "nie wiem, jak to zrobić". Nektra znalazła sposób: umieść bibliotekę DLL w systemie32. –

+0

@Sebastian: Zapytam Cię bezpośrednio: kiedy umieszczę moją bibliotekę DLL w systemie32 i robię hak do aplikacji metra, czy mogę uzyskać pełną kontrolę nad procesem hooked (np: przekierowanie ruchu winsock, odmówienie połączenia do "niebezpieczne" api?). Uczyń nas wspaniałą odpowiedzią, potrzebujemy naprawdę jakiegoś rodzaju informacji. –

Odpowiedz

11

Jestem autorem artykułu Nektry. Badania rozpoczęły się, gdy chcieliśmy dodać więcej funkcji do ograniczonej aplikacji Metro Mail dostarczanej z systemem Windows 8.

Chociaż proces nie był dokładnie taki sam, jak w aplikacjach biurowych, ponieważ zazwyczaj aplikacje w metrze są zawieszone, podpinaliśmy pierwszą usługę DCOM .

Gdy usługa DCOM uruchamia aplikację Metro Mail, w tym momencie wstrzykniemy plik DLL przy użyciu znanej metody CreateRemoteThread/LoadLibrary.

W początkowych testach próbowaliśmy wstrzyknąć plik DLL znajdujący się w tym samym folderze, w którym znajdował się nasz test, i odkryliśmy, że jeśli biblioteka DLL jest w systemie32, ładuje się poprawnie.

Później robimy dalsze badania, aby zobaczyć, dlaczego biblioteka dll nie ładuje się, jeśli nie na folderze system32.

O zahaczaniu winsock, nie testowaliśmy tego, ale myślę, że powinno być to możliwe, ponieważ, przynajmniej na komputerach stacjonarnych, za metą znajdują się powszechnie znane biblioteki dll (kernel32, user32 itd.) I podpinaliśmy niektóre api bez problemów.

9

Jestem autorem artykułu z Komodii, a nasz artykuł nie jest w konflikcie z Nektrą, możliwe jest podłączenie aplikacji Metro lub piaskownicy, która uruchamia aplikacje Metro, ale nie można połączyć się z lokalnym hostem, nie z powodu zahaczenia, ale z powodu ograniczenia Metro na połączeniach localhost. W naszym pierwszym teście użyliśmy naszego Win7 WFP (który jest sterownikiem sieciowym) i zmodyfikowaliśmy IP pakietów do localhosta, który nie działał z aplikacjami Metro, NDIS nie będzie działał tak samo, jedynym sposobem na to jest użycie Microsoft's Przekierowanie proxy WFP.

Może ktoś w końcu znajdzie lub już znalazł hack, który pozwala na bezpośrednie połączenie localhost, i jak w przypadku wszelkich hacków, istnieje ryzyko, które należy wziąć pod uwagę. Jeśli potrzebujesz zatwierdzonej metody, jedynym sposobem jest przekierowanie proxy WFP.

+0

To było bardzo pomocne dla mnie i przyszłych czytelników, dziękuję wam obojgu. –

2

W początkowych testach próbowaliśmy wstrzyknąć bibliotekę DLL znajdującą się w tym samym folderze, gdzie nasz test został zlokalizowany i odkrył, że jeśli biblioteka DLL jest w systemie32, ładuje się dobrze.

Tak, because System32 is in the search order dla aplikacji Metro (Windows store). Nie ma w tym magii.

Podobnie folder twojego testu prawdopodobnie nie znajdował się w kolejce wyszukiwania aplikacji (System32, wykres zależności aplikacji itd.), Więc program ładujący nie znalazłby Twojej biblioteki DLL dla tej aplikacji.

+0

Możesz zmienić ścieżkę wyszukiwania za pomocą LdrLoadDll, ale nie ma ona żadnego efektu. –

+0

Nie wiem, czym jest LdrLoadDll. Z szybkiego wyszukiwania w sieci wydaje się być pewnym nieudokumentowanym szczegółem implementacji w systemie Windows. Nie jestem zaskoczony, że nic ci nie jest. Program ładujący został * zmieniony * w celu obsługi aplikacji Metro (Windows store), więc ścieżki kodu i permutacje różnią się w znaczący sposób. –

+0

LdrLoadDll to API, które wykonuje całą pracę LoadLibrary (LoadLibrary działa jak wrapper). Deklaracja API nie zmienia się od dłuższego czasu, chociaż wewnętrznie obsługuje teraz aplikacje metra. Niektóre sprawdzenia są wykonywane w trybie jądra, aby uniknąć niektórych hacków. –

3

Niniejszym udzielam odpowiedzi, ponieważ wszyscy inni nie mają z tym nic wspólnego. Plik dll musi mieć uprawnienia do odczytu/wykonywania do "Wszystkie pakiety aplikacji" grupa. Dzięki temu program ładujący pozwoli załadować dowolne biblioteki dll w aplikacjach typu Immersive (= aplikacje metro).

miracle

+0

Myślę, że to już odpowiedź na @Mauro, umieszczenie biblioteki dll w folderze system32 jest równoznaczne z posiadaniem uprawnień r & x. –

+0

uprawnienie r & x do "Wszystkie pakiety aplikacji", dokładnie – Laie

+0

Należy pamiętać, że w przypadku niektórych aplikacji uprawnienia R & X są również wymagane w przypadku "wszystkich pakietów z ograniczonymi aplikacjami" (S-1-15-2-2) –

Powiązane problemy