Jump to content

Krane

Members
  • Content Count

    12
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Krane

  1. Dupa ce scrii mult code intr-un limbaj, probleme de securitate devin usor de descoperit, spre exemplu ieri am citit un program de c#, era vorba de o conextiune client server si logica daca esti admin sau nu si asa era facuta pe "if user.ipaddr = addr" unde addr ar fi addr din noua conexiune facuta catre server, deci daca ai putea sa-ti manipulezi pachetu de date cand il trimiti in server poti impersona un admin mai ales din cauza ca nu encriptie si packetele se puteau citi usor.

     

    Dar guideul e foarte bun, am citit niste lucruri la care nu m-am gandit pana acum sau poate ca nu mi-au trecut neaparat prin cap, mersi de post ! :D

  2. Daca vrei am gasit pe net IDA 6.8, decompilerul e misto dar nu vad vreo diferenta intre el si cel de ghidra, singura diferenta probabil e ca in IDA iti arata calling convention ce e bun daca vrei sa apelezi functii din programu respectiv dupa pointeri

     

    Vreau sa spun ca daca ai nevoie de tooluri poti sa imi dai mesaj

  3. 36 minutes ago, yoyois said:

    In general daca ai pointeri null in chainul tau de offsets inseamna ca fie e gresit chainul, fie nu e alocata/folosita inca memoria.

    Adica daca unul din pointeri e null, adresa pe care o cauti nu exista.

     

    Cea mai simpla metoda e sa verifici in interiorul buclei for daca addr e diferita de null.

    Crasul se intampla cand faci *(DWORD*)addr si addr e memorie rezervata.

     

    
    for (unsigned int i = 0; i < offsets.size(); ++i)
    	{
     		if(!addr)
        	{
              //Memorie illegala. O rezolvi cum vrei tu.
              //fie:
              //return 0;
              //
              //fie  varianta eleganta
              // throw IllegalMemoryException;
            }
    		addr = *(DWORD*)addr;
    		addr += offsets[i];
    
    	}

     

     

    Si mai elegant e ca sa verifici chiar daca chainul nu e null, daca adressele sunt correcte.

    Gen daca cautii local_player ii verifici cateva valorii care sunt valori fixe(gen ammo>-1, hp>0, etc.). Ca sa fii sigur ca ai aterizat pe local_player si nu pe alta memorie din greseala.

     

     

    Mai "efficient" de atat nu stiu cum se poate. Oricum ce importanta are efficienta, ca doar adresele le cauti o singura data la injectie.

    Imbunatatiri ai doar daca gasesti un offset path mai scurt.

     

    Mersi de sfat, chesti cu Try Catch am incercat, dar mie imi da crash regardless, doar ca la "throw" an folosit altceva, chestia ce ti-o autocompleteaza Visual studio, probabil ca trebuia sa pun illegalmemoryexception, Eu in trecut am incercat "assert()" si dadea o eroare cu un MessageBox() in fata, aia a fost singura daca cand am fost aproape de un "Try catch", mersi de sfata acum o sa ma uit peste illegalmemoryexception, daca merge e super bine 

  4. Orice tip de auto payload si script kiddie tools sunt detectate de pana si cele mai slabe antivirusuri indiferent daca sunt criptate "FUD" sau metode "shikata_ga_nai=))"

     

    Daca iti scrii propriu cod pana si python trece de antivirusuri, proiectu de WIP am scris la el vreo 2h dar meeeh

     

     

     

    UI-ul e facut cu un wrapper pentru ImGui dar still se misca bine si e mult mai usor de scris socketuri in python 

  5. zip2john + un wordlist din /usr/share/wordlists parca era locatia default in kali, daca nu reusesti atunci fa-ti o partitie din RAM de 1gb si scrie-ti un script de python care generaza parole de tip AAAA AAAB si in 2 zile o sa-l spargi pentru ca totul se misca extrem de rapid fiind disku cu viteza ramului nu a hardului sa ssdului

  6. Sa spunem ca local_player se afla la 

    "game.exe + 0xDEADBEEF" si offsets: 0x10, 0x20, 0x30

     

     

    DWORD mem::FindDMAAddy(DWORD ptr, std::vector<DWORD> offsets)
    {
    	DWORD addr = ptr;
    	for (unsigned int i = 0; i < offsets.size(); ++i)
    	{
    		addr = *(DWORD*)addr;
    		addr += offsets[i];
    
    	}
    	return addr;
    }

     

     

    Best case scenario eu nu intervin si codu merge perfect, dar

     

    Eu imi ating local player dupa ce iau valoarea de la pointeru de baza + toate cele 3 offseturi, daca unul din ele este NULL, atunci programul da crash si implicit jocul.

     

    Si atunci o metoda ar fi ca functia sa returneze bool true sau false in functie de i == offsets.size(), si fals daca nu a ajuns acolo pe un check foarte simplu de 

     

    if(*(DWORD*)addr + offsets[i])

     

    checkul asta o sa vada da urmatorele instructiuni din loop nu o sa dea crash  si o sa -i mai pun un parametru *local_player_addr = addr; ca sa am si adresa complet sa fie totul ok

     

    metoda asta o folosesc si astazi si asa verific daca am local_player si e totul okay, doar ca ieri am stat si m-am gandit, daca nu sunt curios de local_player si ar trebuii sa fie niste variable spre exemplu cand te uiti la replay, si scorul lui este 0? daca el e tratat in derefrence ca si nullptr, si aici m-am cam oprit pentru ca nu imi vine nici o idee inafara de cum am spus si inainte, sa verific daca i == offsets.size(); e sfarsitu si sa intoarca, e oare vreo metoda mai eficienta sau pur si simplu mai multe solutii?

     

     

     

     

     

  7. Daca vrei ceva frumos care nu necesita configurari extra, nu tine loguri, si deschizi porturi doar prin

    nc -nlvp port

     

    iti sugerez sa iti iei de pe ; http://ipjetable.net/

     

    Eu l-am folosit foarte mult, ip-ul e dinamic in momentul in care te deconectezi de pe el se schimba, si are servere doar in franta, daca te intereseaza strict black hat si sa-ti ascunzi urmele poti sa folosesti asta ca un vpn pe langa restu metodelor tale. 

     

    Nu folosi proxychains pentru nmap [indiferent proxychains n sau proxychains4.ceva] pentru ca daca te lasa sa scanezi la sfarsit cand sa primesti outputul iti da eroare [testata de mine] sau daca nu, nu o sa te lase deloc, chiar daca pui -Pn.

     

    BTW nu stiu daca ai studiat mult timp treaba asta dar un pro tip pe care pot sa ti-l dau, vezi ca nu multe vpnuri ascund ipv6, deci foarte mare grija la leakuri de genul si dezactiveaza ipv6 cand intri intr-un vpn 

    sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
    sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1

     

     

    Sa nu iti pierzi timpul cu bug bountyuri pentru ca nu stii ceea ce nu stii, adica esti prea la inceput ca sa poti concura cu oamenii care fac asta de ceva timp si rezolva buguri de atata timp, e ca si cand ai incerca sa repari o masina cand tu nu stii in ce directie se desurubeaza un surub. 

     

    Daca esti curios sa inveti de la "inceput" hacking, am un PDF + video content de la un leak din 2016 a unui baiat ce si-a cumparat OSCP-ul cand era atunci, si iti pot da materialul ala sa studiezi, eu am versiunea din 2020 ma tot gandesc sa ascund orice trace care au pus ei pe matriale si sa-l vand dar pana atunci ti-l pot pe cel din 2016 gratuit, daca esti curios poti sa-mi dai mesaj pe discord [krane#8118] sau aici dar nu sunt prea activ pe forum.

     

    • Like 1
    • Upvote 1
×
×
  • Create New...