Blokowanie plików exe

0

Witam, i dziękuję wszystkim za jakiekolwiek podpowiedzi, nawet te 'gupie' :)

Mianowicie ścieram się z problemem :

Mam kilka aplikacji. Chcę ograniczyć do nich dostęp poprzez hasło, klucz etc.
Gdy użytkownik np. dwuklika w plik .exe jednej z aplikacji zostanie poproszony o podanie hasła na przykład. Natomiast meritum wszystkiego tkwi w innym programie, który będzie pełnić rolę bramy dostępowej do wszystkich moich aplikacji, w której interfejsie będą widoczne wszysktie 'moje' aplikacje a przy każdej z nich przycisk "Otwórz" lub "Uruchom". Po kliknięciu w któryś ww. button, aplikacja dana uruchamia się już bez żadnego popupu o podanie hasła, klucza etc.

Pomyślałem aby użyć jakiś program blokujący pliki exe, ale nie wiem w jaki sposób wypełnić automatycznie za pomoca mojego programu (tej bramy dost.) pole przeznaczone na hasło, tak by uzytkownik nie musiał robić tego za każdym razem [glowa]

Za każdy post jestem wdzięczny. Głowa mi już pęka ;-( Jak coś zagmatwałem to przepraszam.

0

Niech program brama przekazuje do innych programów hasło jako parametr.

0

No tak.
Problem w tym, ze nie do końca wiem jak to urzeczywistnić ...
Skąd wiedzieć jaki i jak taki parametr przekazać.

0

Nie wiesz jak przekazać parametr, czy jak go odczytać? Szczegóły zależą od języka w jakim jest napisana brama, i w jakim są napisane inne programy.

0

Program 'hasłujący' dany plik exe będzie najprawdopodobniej w C++ lub chętniej Java, jakiś open source'owy.
Nie mam dostępu do kodu źródłowego programów blokowanych, więc komunikację muszę oprzeć na 'program brama' <-> 'prg. hasłujący'. Nie zdecydowałem się jeszcze na żaden konkretny prog. hasłujący, więc tez nie wiem w jaki sposób przekazać do niego parametr z hasłem, ani również jak go odebrać.

0

Niech program brama przekazuje do innych programów hasło jako parametr.

@bo - nie znam się na tym (za bardzo) ale takie 'hasło' nie wygląda mi na specjalnie trudne do złamania, chociażby w jakimś debugerze...

0

@msm, ten sposób jest niemożliwy do realizacji, bo źródła programów "właściwych" są niedostępne => nie wiadomo czy one czytają jakieś parametry. Gdyby programy "właściwe" można było zmienić, to można by te hasła przekazywać jakoś zaszyfrowane.

0

Nie wiem czy dobrze rozumiem/sz - chodzi mi o debugowanie na poziomie asemblera = kodu maszynowego. Jeśli to nie jest system rozproszony to siłą rzeczy muszą być dostępne.

można by te hasła przekazywać jakoś zaszyfrowane.

Wszystko można złamać ;) Ale tak byłoby trudniej.

0

Zapewne nie wystarczy debugowanie. Zdebagujesz i się dowiesz, że program ignoruje przekazane parametry lub nie ignoruje, ale nie dokonuje na ich podstawie autoryzacji użytkownika.

0

To crackerzy chyba z pomocy wróżki korzystają, szczególnie przy takim Assassins Creed 2, Half Life 2...

0

Czekałem kiedy się wreszcie zainteresujesz tym tematem.

0

generalnie akcja jest taka że firmy płacą setki tysięcy dolarów za rozwiązania, które są łamane w pół dnia a ty chcesz ich pobić w pojedynkę

zabezpiecz byle jak - jak ktoś będzie chciał złamać to i tak złamie

0

Dokładnie. Nie nastawiam się na jakieś zmyślne, nowatorskie rozwiązanie bo jak odpowiedni cracker chce, to zabezpieczenie obejdzie.
W pierwszej wersji chcę zrobić w ten sposób, że 'program brama' po kliknięciu w przycisk 'Otwórz' pobierze z bazy (na serwerze gdzieś nawet w Tajlandii) dane uzytkownika i sprawdzi czy ma uprawnienia do otwieranego programu (jeśli jest to np. trial, demo itp. lub ograniczone czasowo datą). Jeśli ma, to niech uruchomi program w przeciwnym wypadku niech wyświetli odp. info. Zatem z jednej strony potrzebuję zabezpieczenia, które zablokuje mozliwosc uruchomienia programu bezpośrednio (bez pomocy 'prg. bramy'), a program brama sprawdza pewne param. w bazie i jesli istnieje przyzwolenie dla danego uzytkownika na uruchomienie to program wystartuje. Just an idea ...

Dzięki za zainteresowanie

ps. Wiem, ze w ten sposób ograniczam się do aktywnego połączenia internetowego ... ale mi to lotto

0

Zaszyfruj podprogramy zwyczajnym AESem. Klucz trzymaj na własnym serwerze i jeżeli użytkownik ma prawa do aplikacji, klucz zostanie przesłany do aplikacji-hosta, który odszyfruje plik i uruchomi go.

Wprowadzić można parę utrudnień:

  • plik będzie odszyfrowywany w pamięci i uruchomiony stamtąd (w internecie znajdziesz gotowe rozwiązania, bo trochę zabawy z tym jest)
  • każdy użytkownik będzie miał własny klucz do odszyfrowania plików. Będziesz musiał generować zaszyfrowane pliki przy każdym pobraniu aplikacji, ale w takim wypadku nawet jeżeli ktoś odkryje klucz, będziesz wiedział kto to zrobił i zablokować dane konto.

Oczyyyywiście, nawet początkujący RE będzie wiedział, że cała sztuka złamania tego zabezpieczenia to założenie breakpointa na OEP i kliknięcie jednego przycisku w aplikacji, która zrobi dump, stworzy exe i naprawi tabelę importów ;).

0
Rev.pl napisał(a)

Zaszyfruj podprogramy zwyczajnym AESem. Klucz trzymaj na własnym serwerze i jeżeli użytkownik ma prawa do aplikacji, klucz zostanie przesłany do aplikacji-hosta, który odszyfruje plik i uruchomi go.

ROTFL.

Rev.pl napisał(a)

Oczyyyywiście, nawet początkujący RE będzie wiedział, że cała sztuka złamania tego zabezpieczenia to założenie breakpointa na OEP i kliknięcie jednego przycisku w aplikacji, która zrobi dump, stworzy exe i naprawi tabelę importów ;).

Breakpoint na co, przepraszam bardzo? No i po jakiego wała skoro można statycznie odszyfrować?

Rev.pl napisał(a)
  • każdy użytkownik będzie miał własny klucz do odszyfrowania plików. Będziesz musiał generować zaszyfrowane pliki przy każdym pobraniu aplikacji, ale w takim wypadku nawet jeżeli ktoś odkryje klucz, będziesz wiedział kto to zrobił i zablokować dane konto.

Ciekawe na jakiej podstawie?

0

Jeśli już temat zszedł na dumpy... Może ktoś napisać / wskazać linki, jak protectory radzą sobie z tym, że pamięć można zrzucić? Tak na szybko, jako atak, przychodzi mi do głowy podpięcie się pod proces, ale to jeszcze można wykryć. Sterownik też niby można, ale przecież jest trochę sprzętu z DMA i nie wiem czy jest na to jakaś recepta... więc? :P

Chyba, ze źle sobie to wyobrażam i taki dump nie niesie ze sobą aż tylu kluczowych informacji.

0

Dobre protectory? Zabezpieczyć przed dumpem (chociażby z ring0 poprzez wejście w kontekst procesu i zwykłe skopiowanie pamięci bezpośrednio...) zwyczajnie się nie da. Można zrobić coś innego - sprawić żeby zrzucony kod był niekompletny/bezwartościowy. Częsta praktyka to wycinanie fragmentów kodu z programu, opakowywanie w warstwę abstrakcji protectora i odbudowywanie w pamięci, dynamicznie. Zupełnie jak w wypadku emulowania niektórych importów, zasobów... Całość oczywiście można spiąć z maszyną wirtualną w celu dodatkowego podniesienia bezpieczeństwa. Żeby to złamać to trzeba skompletować wszystkie wycięte fragmenty kodu i poskładać do kupy z oryginalnym, bardzo niewdzięczna zabawa.

To tak ogólnie, wypadłem z obiegu jeżeli chodzi o nowe zabawki.

0
Kunai napisał(a)

ale przecież jest trochę sprzętu z DMA i nie wiem czy jest na to jakaś recepta... więc? :P

Znalazłem dokument z ITL, coś z oszukiwaniem DMA wymyślili jednak. Tylko zostaje jeszcze cold boot attack :)

Świętowit napisał(a)

Częsta praktyka to wycinanie fragmentów kodu z programu, opakowywanie w warstwę abstrakcji protectora i odbudowywanie w pamięci, dynamicznie. Zupełnie jak w wypadku emulowania niektórych importów, zasobów... Całość oczywiście można spiąć z maszyną wirtualną w celu dodatkowego podniesienia bezpieczeństwa.

Yhy, już mi się pewien obraz krystalizuje. Czytałem o VM, które mapują sobie instrukcje, tutaj znalazłoby to chyba niezłe zastosowanie.

0

skoro korzystasz z serwera wrzuc jakies wrazliwe procedury na serwer i rob na nie requesty z aplikacji, zaden glupi ani madry cracker ci tego nie zlamie (bo niby jak, wlamie ci sie na serwer i ukradnie algorytmy, chyba, ze zrobisz algorytm dodawania 2 liczb jak jestes tempy...)

PROGRAM --> WYWOLAJ_FUNKCJE_A_NA_SERWERZE(PARAMETR1, PARAMETR2) --> SERVER

TAGI: SOAP, RPC, COM+

1 użytkowników online, w tym zalogowanych: 0, gości: 1