[C++]Zakodować hasło w progrmie

0

Kompiluje sobie jakiś program w dev-cpp albo w Digital Mars. W programie np. łączę sie z emailem.
Mój problem polega na tym, że po otwarciu programu .exe notatnikiem okazalo sie, że widać tam różne rzeczy, których nie powinno być widać. Gorzej, widać tam mojego maila i hasło do niego :-/
Co mam zrobić zeby zakodować hasło, a najlepiej cały program?

0

Najprostszym rozwiązaniem będzie spakowanie programu przy pomocy UPXa, FSG czy inszej zabawki tego typu.

0
deus napisał(a)

Najprostszym rozwiązaniem będzie spakowanie programu przy pomocy UPXa, FSG czy inszej zabawki tego typu.

co i tak jest banalne do obejscia ;-P

0

Jeśli cie zrozumiałem i chcesz wysłac maile...

jeśli serwer smtp obsługuje identyfikacje inna niz plaintext to mozesz wykorzystać bezpośrednio hasz, zamiast zapisanego hasła.
Jak to sprawdzic?

telnetujesz sie na serwer na port 25 (telnet adres.servera.com 25)
i po polaczeniu wpisujesz:

ehlo adres.servera.com

patrzysz czy występują linijki z zawartością AUTH, i moze ona wyglądać np. tak:

250-AUTH GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN (ta jest dla zrąbanych outlooków)
250-AUTH=GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN (ta jest normalna wg. specyfikacji)

i masz tu 2 możliwości z użyciem hasza MD5. tworzysz taki hasz i zapisujesz go w programie.
kodowanie adresu mailoweg to i tak bezsens, bo musisz go w programie rozkodowac, a pobrania go wystarczy wtedy po prostu sniffer.

Jak wysłac maila (sorry, że w php i niestety bez ssl) masz tutaj: http://www.php.net/manual/pl/ref.mail.php#66705

Natomiast, jeśli uzywasz jakiegoś gotowego komponentu/biblioteki zobacz w niej, czy nie można wykorzystac ssl (do szyfrowania samego maila) oraz czy nie przyjmie jakos własnie wcześniaj juz zahaszowanego hasła.

0

Ja czegos nie zrozumialem. Skoro mozna sie zalogowac za pomoca hasha, to co stoi na przeszkodzie, zeby przechwycic snifferem tego hasha wlasnie i tez sie nim zalogowac?

0

No własnie on też może sie zalogować przez MD5 :P
A w jaki sposob można zdekompresować program skompresowany UPX'em albo czymś podobnym?

0

Programem do dekompresji danego packera. Packer można rozpoznać pod hexedytorem /oczywiście znając konkretne packery/ lub jakimś skanerem np. PEID. Rozpakowanie jakimś unUPX, ASPackDie czy czymś innym, adekwatnym do zastosowanego packera. A najwygodniej to debugger w dłoń, jakiś dumper /np. LordPE/ i ew. jakaś zabawka do odbudowy importów - ImpREC. Przy pomocy debuggera można rozpracować błyskawicznie każdy packer /chyba, że to protector... ale i do się da :-)/. Jedyny problem to znajomość asemblera, wiedza o działaniu takiego śmiecia jak packery i budowy pliku PE /standard plików wykonywalnych w Win/. Pytanie tylko ile osób w tym kraju potrafi rozpakowywać ręcznie nieznane packery - stawiam, że mniej niż 1000 :>

0

@Trok

A w jaki sposob można zdekompresować program skompresowany UPX'em...

Tym samym UPX

UPX -d  spakowany.exe 

;-P

0

Jeśli pakujesz hasło na sztywno do programu, to jak ktoś się uprze, to na pewno wydobędzie. Aby maksymalnie utrudnić sprawę cwaniakom, możesz do serwera wysyłać hasza, który nie będzie na sztywno zapisany w programie, tylko go jakoś wygenerujesz. To już pozostawiam Twojej inwencji :) ale możesz w najprostszej wersji użyć np. jakichś XORów.

Aaa, i funkcję generującą hasło nazwij np. BoldText() albo PotegowanieMacierzy() albo jakkolwiek inaczej, zeby potencjalnemu crackerowi nie wydyała się zbyt wazna :P

No i na koniec spakuj jakimś UPXem.

0

MKF, chłopcze... :

  • raz to data pstatniego postu
  • dwa... hash jest stały
MKF napisał(a)

możesz do serwera wysyłać hasza, który nie będzie na sztywno zapisany w programie, tylko go jakoś wygenerujesz.

  • co da generowanie stałej? to nawet newbie zauważy... już nie raz takie rozwiązanie widziałem i raczej nie pomogło
MKF napisał(a)

możesz w najprostszej wersji użyć np. jakichś XORów.

  • xor dużo da, bo można go odwrócić nawet w pamięci
MKF napisał(a)

Aaa, i funkcję generującą hasło nazwij np. BoldText() albo PotegowanieMacierzy() albo jakkolwiek inaczej, zeby potencjalnemu crackerowi nie wydyała się zbyt wazna...

  • nie wiem czy wiesz, ale cracker nie widzi nazw funkcji, zmiennych, nazw stałych wartości; wyjątek stanowią funkcje eksporotwane i importowane... no, chyba, żę jakiś kretyn skompiluje program w wersji debug i w świat puści /były takie cuda/; cracker widzi tylko mnemoniczną reprezentację kodu maszynowego, adresy do których kod się odwołuje i dane w postaci wartości bajtów itd. /co prawda Interactiver Disassembler czy częściowo OllyDbg oznaczają jaki typ mają argumenty przekazane do API, robią analizę ale... nie są w stanie zastąpić człowieka/; kiedyś łamało sie sporo za pomocą samego debuggera SoftICE... prosze, oto przyklad kodu widocznego pod SI /heh, wzięty z tutoriala jakiego napisałem wieki temu w młodości/:
001B:01EF00E5  MOV       EAX,[ESI+0000010C]
001B:01EF00EB  MOV       EBX,EAX
001B:01EF00ED  PUSH      EBX
001B:01EF00EE  ADD       EBX,00000045
001B:01EF00F4  MOV       [EBP-04],EBX
001B:01EF00F7  POP       EBX
001B:01EF00F8  MOV       EDI,EBX
001B:01EF00FA  ADD       EDI,00000028
001B:01EF0100  MOV       [EBP-08],EDI
001B:01EF0103  PUSH      DWORD PTR [EBP-08]
001B:01EF0106  PUSH      DWORD PTR [EBP-04]
001B:01EF0109  PUSH      DWORD PTR [EBP+08]
001B:01EF010C  CALL      01EF0119
001B:01EF0111  POP       EDI
001B:01EF0112  POP       ESI
001B:01EF0113  LEAVE
001B:01EF0114  RET       0004

albo:

001B:0700B0FC  CALL      07014310
001B:0700B101  MOV       EAX,[EBP-10]
001B:0700B104  PUSH      EAX
001B:0700B105  CALL      [KERNEL32!GetModuleHandleA]
001B:0700B10B  XOR       ESI,ESI
001B:0700B10D  MOV       [EBP-2C],EAX
001B:0700B110  CMP       EAX,ESI
001B:0700B112  JZ        0700B1DC
001B:0700B118  CMP       [EBP-28],ESI
001B:0700B11B  MOV       [EBP-10],ESI

jak zapewnie wiesz debugger pozwala na śledzenie oraz modyfikacje wykonywania programu... ale sam popatrz na ten kod, dużo Ci mówi?

MKF napisał(a)

No i na koniec spakuj jakimś UPXem.

  • upx, fsg czy inne zabawki nawet newbie nie powstrzymała... ładnie w kodzie packera widać skok do OEP, breakpoint na to, zrzucić program z pamięci jak się złapie, odpalić ImportReconstructora /ImpRec/, wpisać OEP, ew. leggo poprawić znalezione IAT i dać [fix]... voila, mamy rozpakowanego execa z niemal dowolnego packera w przeciągu hm... pół minuty? minuty? Od takich rzeczy są komercyjne protectory jak np. PELock.

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