Jump to content

u0m3

Active Members
  • Posts

    543
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by u0m3

  1. 4 hours ago, mariuss615 said:

    [...] la cate rugaciuni de multumire si sanatate primeau de la romani.

    Sincer, nu prea cred ca multumea cineva cuiva...

    2 hours ago, Sithalkes said:

    Lipsiti de imaginatie, infractorii astia. Trebuiau sa se inscrie intr-un partid, atunci ar fi facut rost de oameni, si sa goleasca toate ATM-urile din tara.

    Castigau alegerile sigur asa, si apoi se gratiau! :)))))))

    Vezi ca le dai idei.

     

    In alta ordine de idei, cine a preluat (sau a scris/transcris) citatul de pe Maszol.ru (care e de fapt maszol.ro) a dat-o de gard grav, cu traducerea :)) Zici ca e telefonul fara fir.

    Ce scrie pe http://securityaffairs.co/wordpress/70046/cyber-crime/raiffeisen-cyber-heist.html:

    5 hours ago, Usr6 said:

    [...] Iasi, Bucharest, Suceava, Timeshare, Constanta, Plitvice, Saxon and Crevedia [...]

    Ce scrie pe http://www.maszol.ro/index.php/szajtato/93368-az-evszazad-rablasa-kifosztottak-egy-nagy-bank-romaniai-automatait:

    Quote

    [...] iași-i, bukaresti, suceavai, temesvári, konstancai, ploiești-i, szászvárosi és crevediai [...]

    Ce ar trebui sa scrie:

    Quote

    [...] Iași, București, Suceava, Timișoara, Constanța, Ploiești, Orăștie (cred, nu sunt sigur), Crevedia [...]

    Sa nu mai aducem in discutie traducerea din Maghiara (presupun) in Engleza.

  2. Pacat ca pare a fi rezervata studentilor din Belgia.

    Quote

    Only students of Belgian Academic Institutions can join in the qualifiers and finals. Participants must be 18 years of age; if you or a member of your team has not reached that age, please contact us before registering.

    In order to participate in the finals, the team must include students graduating in 2018 or 2019.

    The members of the winning team of each year will not be eligible for future editions.

    Your team does not qualify for the finals but was part of the Top 8 teams in the Qualifiers round? We will not forget you, and you will receive something special to congratulate you on that performance.

     

  3. Daca este o arhiva zip normala, poti incerca zip2john (program utilitar din suita JohnTheRipper). Cam in felul acesta:

    zip2john test.zip > test.zip.hash

    Acum, daca ai noroc, poti folosi hashcat pentru a face partea de brute-force/dictionary-attack/etc folosind OpenCL/CUDA.

    Daca hash-ul este de forma

    test.zip:$pkzip2$1*2*2*0*1c*10*f30b8770*0*3e*0*1c*f30b*495b*14f1b9c5523b908446a836c0ee0f109fdf033eb16a8b360d528c3a4c*$/pkzip2$:::::test.zip

    (adica apare acel $pkzip2$) vei fi nevoit sa te multumesti cu performanta cpu.

     

    Cat despre IDA, ai incercat sa ii faci debgging in timp ce ruleaza, sa vezi cam ce si cum face?

  4. Synopsis: Vshadow (vshadow.exe) is a command line utility for managing volume shadow copies.  This tool is included within the Windows SDK and is signed by Microsoft. Vshadow has a lot of functionality, including the ability to execute scripts and invoke commands in support of volume shadow snapshot management.  Not surprisingly, these capabilities can be abused for privileged-level evasion, persistence, and file extraction.

    Linkhttps://bohops.com/2018/02/10/vshadow-abusing-the-volume-shadow-service-for-evasion-persistence-and-active-directory-database-extraction/

    Via

     

  5. 1 minute ago, vorella2015 said:

    Da , am cautat , nu stiu ce sa cred , uni zic ca se poate , alti nu .

    Sincer, nu imi dau seama daca faci trolling sau nu...

    Cand accesezi un website, primesti automat toate cookie-urile aferente...

    Atunci cand webserver-ul iti trimite niste cookies, de fapt iti trimite header-ul http Set-Cookie in response. Toate accesarile urmatoare vor avea in request header-ul http Cookie cu acel/acele cookies primite la inceput (sau pe parcurs).

    Exemplu folosind https://httpbin.org/

    Spoiler
    
    $ curl -v -L -c curl-cookie-jar.bin 'https://httpbin.org/cookies/set?k2=v2&k1=v1'
    * timeout on name lookup is not supported
    *   Trying 54.221.212.171...
    * TCP_NODELAY set
    * Connected to httpbin.org (54.221.212.171) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
    * successfully set certificate verify locations:
    *   CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
      CApath: none
    * TLSv1.2 (OUT), TLS header, Certificate Status (22):
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Client hello (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=httpbin.org
    *  start date: Jan 11 23:37:29 2018 GMT
    *  expire date: Apr 11 23:37:29 2018 GMT
    *  subjectAltName: host "httpbin.org" matched cert's "httpbin.org"
    *  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
    *  SSL certificate verify ok.
    > GET /cookies/set?k2=v2&k1=v1 HTTP/1.1
    > Host: httpbin.org
    > User-Agent: curl/7.51.0
    > Accept: */*
    >
    < HTTP/1.1 302 FOUND
    < Connection: keep-alive
    < Server: meinheld/0.6.1
    < Date: Sun, 28 Jan 2018 14:53:57 GMT
    < Content-Type: text/html; charset=utf-8
    < Content-Length: 223
    < Location: /cookies
    * Added cookie k1="v1" for domain httpbin.org, path /, expire 0
    < Set-Cookie: k1=v1; Path=/
    * Added cookie k2="v2" for domain httpbin.org, path /, expire 0
    < Set-Cookie: k2=v2; Path=/
    < Access-Control-Allow-Origin: *
    < Access-Control-Allow-Credentials: true
    < X-Powered-By: Flask
    < X-Processed-Time: 0.000816106796265
    < Via: 1.1 vegur
    <
    * Ignoring the response-body
    * Curl_http_done: called premature == 0
    * Connection #0 to host httpbin.org left intact
    * Issue another request to this URL: 'https://httpbin.org/cookies'
    * Found bundle for host httpbin.org: 0x45fb210 [can pipeline]
    * Re-using existing connection! (#0) with host httpbin.org
    * Connected to httpbin.org (54.221.212.171) port 443 (#0)
    > GET /cookies HTTP/1.1
    > Host: httpbin.org
    > User-Agent: curl/7.51.0
    > Accept: */*
    > Cookie: k1=v1; k2=v2
    >
    < HTTP/1.1 200 OK
    < Connection: keep-alive
    < Server: meinheld/0.6.1
    < Date: Sun, 28 Jan 2018 14:53:57 GMT
    < Content-Type: application/json
    < Access-Control-Allow-Origin: *
    < Access-Control-Allow-Credentials: true
    < X-Powered-By: Flask
    < X-Processed-Time: 0.00118708610535
    < Content-Length: 55
    < Via: 1.1 vegur
    <
    {
      "cookies": {
        "k1": "v1",
        "k2": "v2"
      }
    }
    * Curl_http_done: called premature == 0
    * Connection #0 to host httpbin.org left intact

     

    Tot ce e prefixat cu * este legat de negocierea SSL. Tot ce e prefixat cu > este parte a request-ului. Tot ce e prefixat cu < este parte a response-ului. Restul e body-ul.

    • Upvote 1
  6. Domnul @Usr6 mi-a trasat sarcina sa scriu write-up-ul (modul in care am rezolvat problema). Asa ca hai sa incepem.

     

     

    Nivelul 0

    Challenge-ul incepe cu o poza, jpeg: TheBodyguard.jpeg si cu un fisier script python (denumit de mine password_encoder.py)
    Mai intai analizam poza (eu am preferat binwalk) si observam ca are concatenat la sfarsit un fisier zip:

    Spoiler

    64SVone.png

    Avand in vedere faptul ca avem si un script python ce pare sa codeze parola, putem presupune ca arhiva atasata este parolata.
    In mod normal binwalk incearca sa dezarhiveze/decomprime arhivele pe care le intalneste, dar in acest caz ne-ar incurca mai mult, asa ca vom rula binwalk --extract --carve TheBodyguard.jpg.  Acum avem un dosar _TheBodyguard.jpg.extracted unde vom gasi un fisier 14757.zip (deoarece a fost gasit la offset-ul 0x14757). Daca vom incerca sa dezarhivam acest fisier zip, ne vom lovi de necesitatea unei parole.

     

    Nivelul 1

    Acum vom analiza script-ul python, pentru a determina parola.
    La prima vedere pare cam complicat, asa ca vom incerca sa urmarim executia de la capat la inceput.
    Stim ca avem output-ul "You need this:201,203,165,195,165,191,205,187,181,191,173,187,173,187,193,199,", asa ca vom cauta codul ce genereaza aceasta linie; si il gasim pe ultimul rand al script-ului.
    Observam ca apeleaza functia enc2 cu avand ca prim parametru parola noastra, iar ca al 2-lea parametru rezultatul functiei enc2.
    Daca analizam corpul functiei enc2 observam ca aceasta functie concateneaza suma valorilor numerice a caracterelor de cele 2 string-uri primite ca parametrii (t1 si t2). Aici observam ca lungimea lui t1 trebuie sa fie mai mica sau egala cu lugimea lui t2. Altfel vom avea erori.
    Dar t2 este de fapt parola noastra codata cu enc1. Iar in enc1 observam ca facem ROT+3 (adica "a" devine "d", "b" devine "e", etc), doar daca este o litera mica; altfel sarim peste.
    Din datele de mai sus deducem ca parola este formata doar din litere mici, mai exact din 16 litere mici.

    Inarmati cu aceste date vom incerca o implementare in python (ipython mai exact):

    Spoiler

    7FIImOs.png

    Mai intai extragem sumele de caractere ca un array de intregi (In [3] in ipython).

    Apoi generam toate sumele posibile ce pot rezulta din utilizarea functiei enc2 (ne intereseaza doar sumele ca valori numerice; argumentul functiei str din bucla for) si le stocam in dictionarul nostru (declarat in In [4]), impreuna cu literele aferente care au generat suma (o suma poate fi generata cu mai multe litere, cum poate fi observat in Out [8]).
    La sfarsit generam toate combinatiile posibile si obtinem 8 posibile parole, dar prima pare cea mai promitatoare.
    O utilizam si ne alegem cu un fisier prng, fara nici o extensie.

     

    Nivelul 2

    Deoarece fisierul prng nu are nici o extensie, vom apela  la utilitarul file pentru a identifica subiectul.
    Aflam ca este tot o arhiva de tip zip, asa ca il redenumim in prng.zip. In momentul in care incercam sa il dezarhivam, ne lovim de o parola si un indiciu sub forma altui script python:

    Spoiler
    
    import time
    import string
    
    
    print """
    The most powerful random password generator
    \t Version 2018"""
    
    seed = str(time.localtime()[0])
    seed += str(time.localtime()[2] + time.localtime()[3])
    seed += str(time.localtime()[4] + time.localtime()[5])
    
    
    def password_gen(samanta):
        p = ""
        lungime = len(samanta)
        for i in range(lungime):
            if i % 2 == 0:
                p += samanta[i]
            else:
                p += string.ascii_lowercase[i]
        return p
    
    
    print "Your secret password is: ", password_gen(seed)

     


    De aceasta data, scriptul se vrea un pseudo random number generator, ce isi genereaza seed-ul dintr-o structura python folosita pentru stocarea datei.
    Aceasta tip de date (named tuple) este strurata in felul urmator:

    • pozitia 0: anul (accesabil si prin membrul tm_year)
    • pozitia 1: luna (accesabil si prin membrul tm_mon)
    • pozitia 2: ziua lunii (accesabil si prin membrul tm_day)
    • pozitia 3: ora zile in format 24h (accesabil si prin membrul tm_hour)
    • pozitia 4: minutele (accesabil si prin membrul tm_min)
    • pozitia 5: secundele (accesabil si prin membrul tm_sec)
    • pozitia 6: ziua saptamanii (accesabil si prin membrul tm_wday)
    • pozitia 7: ziua din an (accesabil si prin membrul tm_yday)
    • pozitia 8: decalajul aferent orei de vara (accesabil si prin membrul tm_isdst)

    Noi nu suntem interesati decat de pozitiile 0, 2, 3, 4, 5.
    Pe de alta parte, analizand functia password_gen, observam ca pozitiile pare din string-ul seed sunt pastrate (deci sunt cifre mereu) iar pozitiile impare sunt inlocuite cu litere din alfabet, aflate la pozitia respectiva (din punct de vedere lexicografic). De aici putem deduce ca parola noastra nu poate fi mai lunga de 27 de caractere (deoarece ultimul caracter poate fi o cifra).
    In continuare vom face niste supozitii legate de data folosita ca seed, si anume vom presupune ca este data crearii/modificarii fisierului din arhiva (sau foarte aproape). In fond si la urma urmei putem oricand sa facem brute-force pe parola cu un program asemanator John The Ripper, folosind ca masca pentru parola ?db?dc?df?dh?dj?dl?dn?dp?dr?dt?dv?dx?dz?d.
    Daca listam continutul arhivei (folosind unzip -l prng.zip) nu vom avea decat data, ora si minutele, nu si secundele. Ca atare vom face o listare mai completa a arhivei in speranta ca vom obtine o data completa, folosind comanda unzip -Z -l -v prng.zip:

    eUAiFd2.png

    Inarmati cu aceste date, vom incerca un mic script python:

    Spoiler

    3OW3yKY.png

    Mai intai declaram o functie care va calcula acea variabila seed ce se afla la inceputul script-ului original, folosind un struct_time ca argument.

    Apoi copiem functia password_gen.

    In ultimul rand vom crea o variabila timestruct (de tip struct_time) ce va contine data fisierului, folosind functia strptime (adica vom aplica o functie de parsing pe string-ul cu data).

    Avand aceste detalii, apelam functia password_gen pentru a obtine seed-ul ce serveste ca parola.

    Din nefericire aceasta parola nu a functionat, dar putem presupune ca suntem pe aproape. Daca presupunem ca nu avem secundele corecte putem genera o lista de parole (unice) pentru fiecare secunda posibila:

    Spoiler

    RqWuUVB.png

    Incercand aceste variante, descoperim ca "2b1d3f2h" este parola potrivita, si obtimem un fisier ' .64'.

     

    Nivelul 3

    Fisierul obtinut la pasul anterior nu pare prea darnic in a ne prezenta vre-un indiciu; utilitarul file nu ne poate spune decat ca avem de aface cu un fisier text ASCII cu terminatii de linie CRLF (adica Windows/DOS).

    La o analiza mai atenta, observam ca avem de aface cu un fisier cu mai multe linii, fiecare linie avand un numar diferit de spatii alble (caracterul ASCII 0x20). Din start am presupus ca avem de aface cu ceva base64 si ca numarul de spatii albe este relevant.

    Aici m-am blocat din cauza propriei prostii si neatentii, si am pierdut cam o saptamana (adica aproximativ 10 ore distribuite de-a lungul a 7 zile).

    Cand am inceput challange-ul, cel de-al 2-lea indiciu era deja postat. Asa ca m-am folosit de el. Indiciul decodat ne spune

    Spoiler
    
    Hai sa numaram:
    1 caracter
    2 caractere
    3 caractere
    ...

     

    Inarmat cu aceste informatii, e timpul pentru niste experimente. Mai intai citim fisierul, si il spargem in linii de spatii si observam ca avem 12 linii.

    Acum sa vedem cate spatii albe avem pe fiecare linie (in poza In [5] si Out [6]). Deci nici un numar nu trece de valoarea 64, iar cum fisierul are extensia 64, indiciul a fost codat in base64 si ni s-a si precizat ca indiciul "este 2 indicii", probabil aceste numere sunt indecsii alfabetului base64.

    Construim o variabila (in poza este denumita alphabet la linia In [7]) in care vom stoca alfabetul base64 (vom folosi alfabetul clasic, A-Za-z0-9+/).

    Acum folosim sirul de numere de mai sus ca indecsi si... ne-am blocat. Obtinem S3+waDCjc4li, care decodat ne da urmatorul sir de bytes: 

    Spoiler
    
    00000000  4b 7f b0 68 30 a3 73 89 62                       |K.°h0£s.b|
    00000009

     

    Problema este extrem de simpla: noi avem niste lungimi de siruri de spatii albe, deci, pornesc de la 1, dar array-urile in python pornesc de la 0.

    Si asa am pierdul degeaba o saptamana, incercand tot felul de alfabete ezoterice, si cautand alte explicatii.

    Pana la urma l-am contactat pe @Usr6 care m-a trezit la realitate

    Spoiler
    Quote

    [...] eu as zice ca e un simplu algoritm de criptare prin substitutie... [...]

     

    De indata ce corectam problema index-ului obtinem solutia.

    Spoiler

    ECZE72F.png?1

     

    • Upvote 6
  7. Synopsis: In the past few weeks, I found that multiple websites using Cloudflare were misconfigured, and allowed an attacker to bypass any Cloudflare protection in place easily. Several of the companies behind these websites had more than 1 million users and were among the top companies of their market segment.

    Linkhttps://blog.christophetd.fr/bypassing-cloudflare-using-internet-wide-scan-data/

    GitHubhttps://github.com/christophetd/CloudFlair

  8. TL;DR;
    Researchers warn of a new attack which can be carried out in less than 30 seconds and potentially affects millions of laptops globally.
    As Intel was rushing to roll out patches for Meltdown and Spectre vulnerabilities, security researchers have discovered a new critical security flaw in Intel hardware that could allow hackers to access corporate laptops remotely.
    Finnish cyber security firm F-Secure reported unsafe and misleading default behaviour within Intel Active Management Technology (AMT) that could allow an attacker to bypass login processes and take complete control over a user's device in less than 30 seconds.

     

    Linkhttps://thehackernews.com/2018/01/intel-amt-vulnerability.html

     

     

    Pe o nota personala, greu inceput de an pentru Intel. Multe "molii" iesite de la naftalina.

    • Thanks 1
    • Upvote 2
  9. S-ar putea sa gasesti niste site-uri de trading prin care poti face asa ceva. Din cate am inteles https://www.etoro.com are optiunea asta, dar nu stiu daca trebuie sa ai cont "verificat" (adica sa le dai copie dupa buletin si dovada de adresa) sau nu. Dar sa ne intelegem, inseamna sa depozitezi fonduri pe platforma de trading, acolo schimbi pe BTC, iar daca le vrei in alt portofel decat cel de pe platforma, trebuie sa ii trimiti de acolo. Si toate aceste tranzactii implica taxele aferente.

    • Like 2
×
×
  • Create New...