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

Odpowiedz Nowy wątek
Trok
2007-01-03 22:12
Trok
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?

Pozostało 580 znaków

2007-01-04 01:13

Rejestracja: 15 lat temu

Ostatnio: 7 lat temu

0

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


I nie udawaj, że rozumiesz.

Pozostało 580 znaków

yaca
2007-01-04 10:12
yaca
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

Pozostało 580 znaków

2007-01-04 11:19

Rejestracja: 16 lat temu

Ostatnio: 7 lat temu

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.


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

2007-01-04 13:39

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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?


You need to learn how to walk
before you can run

Pozostało 580 znaków

Trok
2007-01-07 17:11
Trok
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?

Pozostało 580 znaków

2007-01-07 17:34

Rejestracja: 15 lat temu

Ostatnio: 7 lat temu

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 :>


I nie udawaj, że rozumiesz.

Pozostało 580 znaków

2007-01-07 22:39

Rejestracja: 13 lat temu

Ostatnio: 6 lat temu

0

@Trok

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

Tym samym UPX

UPX -d  spakowany.exe 

;-P


Pozostało 580 znaków

MKF
2007-07-04 11:55
MKF

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

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.

Pozostało 580 znaków

2007-07-04 14:12

Rejestracja: 15 lat temu

Ostatnio: 7 lat temu

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 nei 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.


I nie udawaj, że rozumiesz.

Pozostało 580 znaków

Odpowiedz

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