Friday, July 24, 2009

Authenticode Challenge v2



Kriptoloji ve MD5 collision üzerinde araştırma yaparken, PDFID'in yazarı olan Didier Stevens'in bloğunda "Authenticode Challenge" baslıklı bir yarışma ile karşılaştım.

(PDFID, pdf’ler icinde gizli zararlilari ve exploitleri teshis etmekte kullandigimiz cok basarili bir tool ayni zamanda virustotal’ada eklendi)

Bu yarışmada, Didier Stevens’in isteği şöyle olmuş,yazdığı bir windows consol uygulamasının, print ettiği mesajın, dosyanın dijital imzasının bozulmadan patch edilerek değiştirilmesi.

Konunun üzerinden zaman geçtiği için, çözüm bulunmuş, ancak işin ilginç tarafı, çözümü bulan kişinin çözümü (Mister P and Q.) Didier'in çözümünden çok daha uzun ve prof olması.

Yarisma Detayları ve çözümler:
http://blog.didierstevens.com/2008/07/22/authenticode-challenge/
Didier Stevens'in Çözümü:
http://blog.didierstevens.com/2008/09/17/authenticode-challenge-solution-part-1/
Mister P and Q. 'nun cozumu:
http://rapidshare.com/files/142655251/Solution.zip

Buradaki yarışmanın ve çözümün temelini, MD5 algoritmasındaki zafiyet oluşturuyor.
Eğer takip etti iseniz, geçenlerde Alexander Sotirov da PlayStation'lar ile md5 algoritmalı RapidSSL CA sertifikası oluşturmuştu.

Bende buna benzer bir yarışma yapmak istedim ve bunun için, basit bir win32 uygulaması yaptım, bu uygulamanın, Zemana'ya ait private key ile imzalaması için yazılım koordinatörümüzden rica ettim. (Private key onun dışında kimsede yok)

Sonuç olarak, Challenge calistiginda "sha1RSA Authenticode Challenge 1" mesajini veriyor. İsteğim, bunu "sha1RSA Authenticode Challenge 2" yapacak şekilde ve dijital imzasını bozmadan patch etmeniz.

Yalniz burda MD5 collision kullanamıyorsunuz, çünkü dijital sertifikamızdaki kriptoloji algoritması 528 bitlik SHA1 =)

Saka yaptigimi dusunmeyin cunku oncelikle kendim denedim ve cozumu olduguna garanti veririm , daha öncede dediğim gibi private key bende yok.

Çözümü bulanlara kutulu AntiLogger hediye. İçinizden neden IPhone değil, diye düşünmeyin, çünkü çözüm aslında çok basit.

Geri dönüşleri bekliyorum. (Bulanlar bana erkan.arnaudov@zemana.com ‘dan mail atsin lutfen ve yorum yaparkende cozum hakkinda ipucu vermeyin)


Authenticode Challenge v2



12 comments:

  1. Çok saçma bunun cözümü olamaz! Aynı zamanda resimde sertifikanın c:\erkan\zemana.ltd.cer klasorü altında olduğu gözüküyor,kendini ele vermişsin - bunu bize verin ozaman bizde yapalım

    http://4.bp.blogspot.com/_W_bgBWwE23o/SmnWdrFCrRI/AAAAAAAAAII/n4K2rtU32yo/s1600-h/sha1-challange2.png

    ReplyDelete
  2. çözüm o blogtaki gibi keyi alıp pathlenmiş dosyayı sdk daki toollar ile yeniden imzalamak mı? yoksa reversing methodlar ile bir çözümü var mı?

    ReplyDelete
  3. Merhaba o gordugun private key degil sadece sertifika. Alttaki adresten indirebilirsin.

    http://zemana.com/temp/zemana.ltd.cer

    Blogu takip edenlerin bir cogu researcher, IT ve guvenlik uzmanlari ancak hala cevabin gelmemesi beni sasirtti biraz ipucu vereyim; Tabiki 512 bit'lik bir key'i brute force ile cozmenizi beklemiyorum hatta cozumde kiriptolojinin ilgisi yok diyebilirim, cevap Authenticode teknolojisinde ve size verdigim exe'nin icinde yatiyor.

    ReplyDelete
  4. en üstteki adsız ben değilim 2. benim :)

    neyse.. konuda verdiğiniz diğer blogtaki çözümler gibi key ile uğraşılacaksa elimi sürmeyecektim açıkçası ama reverse engineering metodlarla çözümü var diyorsanız bi bakıcam artık akşama :P
    merak ettim nasıl bir çözümmüş..

    ReplyDelete
  5. Evet reverse ettiginizde cozume cok yakin olacaksiniz.

    Bundan sonra yeni bir Authenticode challange daha hazirladim o biraz zor olacak ancak bu inanin cok kolay.

    Ollydbg ile assagidaki yolu izlerseniz exe'de mesajin ciktigi satira gelirsiniz.

    ALT+F1 -> bp user32.MessageBoxW ENTER ->F9 -> CTRL+F9

    NOTE: Yorum yazarken "Adi/URL" kismini secerek mail vermeden sadece isim yazabilirsiniz.

    ReplyDelete
  6. http://rapidshare.de/files/47960448/Challenge.exe.html

    Sadece tek bir byte degiştirdim :)

    kemal79@yahoo.com lisans alayım!

    ReplyDelete
  7. @kemal79
    zort tim var..sen oraya fazla takılıyorsun galiba..editçiliğe alışmışsın.
    certifikayı kontrol ettin mi? neyse sen git biraz trojan editle.

    ReplyDelete
  8. illaki challenge.exe mi patchlenecek? system dosyalarını yada memory patchlesek çözüm olarak kabul edilirmi?
    zaten exenin içine özel bir fonksiyon yazmadıysanız imzanın bozulmaması için ancak imzayı kontrol eden mekanizma patchlenir, buda sistem dosyalarıyla oynamak demek.

    exe nin içinde çözüm var diyorsanız bi kurcalayalım bakalım.

    ReplyDelete
  9. Didier Stevensin blogundaki yarisma ile sizin blogtaki yarışmayı kıyaslamak için ikisininde çözümünü biliyor olmam gerekir.

    Diğer blogtaki yarışmadaki çözümler mantıken aynı; keyi elde edip patchlenmiş exeyi yeniden imzalamışlar.

    Belki sizin yarışmanın çözümü çok daha basit olabilir ama benim açımdan ortada bir bilinmeyen var "Authenticode teknolojisi" ve "pkcs7 structor yapisi"
    Bunlar bilinmeden istediğiniz çözümü üretmek mümkün değil sanırım.
    user32.dll yi patchlesem :D "sha1RSA Authenticode Challenge 2" bastırırım ekrana bu mesajı ama tabi bu bir çözüm değil..
    symmetrik decriptmi var? patchledikten sonra bu fonksiyonları kullanarak yeniden mi imzalanıyor nedir..
    key şifreli galiba..yerini bilsem belki key adresini kullanan fonsiyonları takip ederek bişeyler çıkarabilirm dicem ama neyse

    çözen çıkmazsa çözümü verecek misiniz?

    ReplyDelete
  10. @Kemal79
    Yarismanin, yarisini tamamliyarak challange2 gostermesini saglamissin ancak dijital imzasi bozulmus , biraz daha ugrasmalisin.

    @civil engineer
    Aslinda sistem dosyalarini patch etderek vs kolay bir cozum dusunmek istiyorsun ancak bunu cozum olarak kabul edemem cunku bu cozum sadece
    senin patch edilmis makinanda calisacaktir.

    Bu yarisma Didier Stevensin blogundakine kiyasla cok cok daha kolay, hersey kodu reverse ettginizde gorunuyor aslinda (dikkatli bakin).
    Ve Authenticode teknolojisi hakkinda cok cok ufak bi bilgi de gerekiyor. Aslinda Micrtosoft kisa zaman oncesine kadar Authenticode teknolojisi hakkinda
    hic bir makale yayinlamamisti ve tek bilgi assagidaki linkte idi.
    http://web.archive.org/web/20070826233230/http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt

    Ancak simdi daha detayli bilgi bicrosoft tarafindan yayinlandi:
    http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx

    PKCS7 structoru ise malesef ASN.1 denilen benim cok gereksiz ve sacma buldugum cakma bir dil ile tanimlaniyor. Linux uzerinde microsft cyypto API leri olmadan dijital imza dogrulamak icin bi ara
    ASN.1 beni delirtmisti.

    Sonuc olarak kimse bulamassa tabi cozumu yayinlayacagim ancak yakinda mutlaka cikacaktir hatta bence ilk bulan sen olacak gibisin.

    ReplyDelete
  11. http://rapidshare.com/files/261301943/Challenge.exe.html

    Yarışma sağı gösterip solu vuruyor. Makaleye ve kriptografik yaklaşımlara göre hareket etmeyin. 1dk süre yetiyor.

    ReplyDelete
  12. gerçekten çok kolaymış. ben başından beri exeyi incelemiyordum, mantıken imzanın bozulmaması için system üzerindeki apilere yoğunlaşmış, bir mantık kurmaya çalışıyordum.
    erkan bey de kriptolojik bir çözümü olmadığını söyleyince exede bir dümen olduğunu anladım :D

    ReplyDelete