Skocz do zawartości

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

dejot44

Łamanie zabezpieczeń aplikacji - z czym to się je?

Rekomendowane odpowiedzi

Witam! Ostatnio zajmuję się napisaniem aplikacji w której będzie trzeba się logować, więc zacząłem interesować się zabezpieczeniami. A dokładniej ich łamaniem. Nie chodzi mi tutaj o konkretne programy hakerskie, ale bardziej jak taki program hakerski działa. Dla przykładu, taka prosta aplikacja w C++:

#include <iostream>

using namespace std;

int main()
{
   string password;
   cout<<"Password: ";
   cin>>password;
   if(password == "Zf241sfg!s")
   {
       cout<<"Tajny kod: c432df";
   }
   cin>>password;//zeby program sie nie wylaczyl
}

Jak napisać program, który tylko posiadając plik exe/deb/etc. tego programu, złamał hasło i pokazał nam "tajny kod"? Jak taki program mógłby wyglądać i w jakim języku najwygodniej byłoby go napisać? Z góry dzięki za pomoc ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wystarczy jako-tako znać assembler i dysponować debuggerem. W zależności od poziomu skomplikowania projektu łatwiej bądź trudniej dobrać się do takowych danych lub wymusić tok wykonywania się programu niezgodny z intencją programisty.

 

Twój przykład jest o tyle prosty że napis jest sztywno umieszczony w pliku wykonywalnym, i wystarczy przeszukać go - czy to hex edytorem, czy np. narzędziem strings.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

w tym przypadku prosto :E

 

strings -d a.out | c++filt | egrep -v 'std::|_'

 

wynik

 

/lib64/ld-linux-x86-64.so.2
H6Yb
CyIk
libstdc++.so.6
libc.so.6
fffff.
Password: 
Zf241sfg!s
Tajny kod: c432df
;*3$"
zPLR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak jak napisane jest wcześniej, wystarczy podglądniecie pliku .exe w jakimś edytorze tekstu, np w notatniku i przeglądniecie tego co tam jest, znajdziesz tam coś takiego:

post-309820-145536981907_thumb.png

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no cóż ale są jeszcze zaciemniacze(obfuscator) kodu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tutaj chodziło o pokazanie prymitywnego złamania programu - wystarczy, żeby stringi były już w samym kodzie zahashowane i podczas uruchomienia programu odpowiednio dekodowane to za pomocą szukania stringów się tego nie złamie - raz, że zakodowany tekst może nie być pokazany jako string a co ważniejsze nawet jeśli tak to podanie do programu hasha nie rozwiąże sprawy bo nie tego program będzie oczekiwał

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Oczywiscie, ale taki program po uruchomieniu odkoduje stringi. Wtedy wystarczy dump pamięci procesu do pliku i tam poszukanie stringów

W wypadku hashowania problem troche się komplikujebo najpierw trzeba zidentyfikować jaka funkcja hashująca została użyta, a potem szukanie kolizji. Jednak w tym wypadku jeśli chodzi o "tajny kod" to on nie może być zahashowany, jedynie hasło go strzegące musi być.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...