3 Mayıs 2014 Cumartesi

zaman : 2 comments

Undetect egitimi



İçindekiler:


1-Temel Kavramlar Nelerdir? 
2-Bu işe nereden başlamalıyım? 
3-Undetect yöntemleri kaç çeşittir? 
4-Runtime UD ve Scantime UD nedir?
5-Anti virüsler bir programı nasıl tarar? 
6-Scantime UD yönteminin mantığı nedir?
7-Runtime UD yönteminin mantığı nedir?
8-Runtime UD yöntemleri için birkaç ipucu? 
9-Runtime UD ve Scantime UD yöntemleri nelerdir? 
10-Klasik yöntemlerin üzerine nasıl çıkılır?
11-Orijinal UD yöntemlerini geliştirmek için dikkat edilecekler? 
12-Anti virüsler temel haliyle nasıl çalışır? 
13-Offsetleri ve algoritmaları anti virüs nasıl tespit ediyor? 
14-Temel UD yöntemleri nelerdir? 
15-Hangi editörleri kullanmalıyım? 



Detected: Anti virüs yazılımları tarafından offsetleri deşifre edilmiş demektir.


Peki, bu “offset” dediğimiz kavram nedir?

Aşağıdaki resimde gördüğünüz kırmızı kare içerisindeki kodlar programın ofsetleridir. Anti virüs yazılımları bu kodları okuyarak programı taramaktadır.





Undetected: Detect kavramının başına “Un” eki getirilerek, birçok anti virüs yazılımı tarafından keşfedilmemiş anlamına gelmektedir.


Undetect kavramının kısaltması Un ve Detect kelimelerinin baş harflerini kullanarak yapılmaktadır. (UD)



Eğer tüm anti virüsler tarafından offsetleri yakalanmıyorsa, Undetect kavramının başına “Full (Tam)” anlamına gelen FullUntedect getirilir. Full, Un ve Detect kelimelerinin baş harfleri kullanılarak kısaltma yapılmaktadır. (FUD) 



Çoğu arkadaşımız bu kavramları karıştırmaktadır. UD en az bir tane anti virüse yakalanmış demektir, FUD ise hiçbir anti virüs tarafından deşifre edilmemiş demektir.



Bu işe nereden başlamalıyım?
1-Programlamanın mantığını öğrenmelisiniz. Bana göre en az bir tane programlama dili öğrenmelisiniz. Çünkü işiniz, yazılımları anti virüslerden kaçırmaktır. Programlar ile içli dışlı olmalısınız.

2-Temel UD yöntemlerini araştırmalısınız ve bunlara vakıf olmalısınız. Eskidi diye önem vermemezlik yapmayın. Çünkü yapacağınız UD işlemleri bunun üzerine kurulacaktır. Bir nevi hayal gücünüzü geliştirecektir.

3-Hex Workshop, OlyDbg, Res Hacker gibi programları öğrenmelisiniz. Merak etmeyin yazının sonunda bu tür programların hepsini tanıtacağım.

Undetect yöntemleri kaç çeşittir?
Undetect yöntemlerini 2 ana gruba ayırabiliriz:

1-Kaynak koddan yaptığımız UD işlemleri 
2-Editörler yardımı ile yaptığımız UD işlemleri




Runtime UD ve Scantime UD nedir?
Scantime(Kod) : Program çalıştırılmadığında anti virüsler tarafından tespit edilemez iken, çalıştırıldığında anti virüsler tarafından yakalanmasıdır.

Runtime(Algortima) : Program hem çalıştırıldığında hem de çalıştırılmadığında anti virüsler tarafından tespit edilememesidir.

Anti virüsler bir programı nasıl tarar?
Anti virüslerin nasıl tarama yaptığını bilmek çok önemlidir. İki ana şekilde tarama yapmaktadır. Şimdi bu tarama şekillerini inceleyelim.

1-Yukarıda bahsettiğim gibi programın offsetlerini tarayarak yapmaktadır. Yani kaynak kodları tarayarak yapmaktadır.

2-Program çalıştığında klasör ve dosya işlemleri, kayıt defteri değişiklikleri ve ağ hareketlenmelerini izlemektedir. Şüpheli bir hareket tespit ettiğinde anti virüs program deşifre olacaktır.

İşte bu iki ana tarama yöntemleri “Scantime UD” ve “Runtime UD” yöntemlerinin ortaya çıkmasını sağlamıştır.

Eğer offsetleri gizlersek programımız Scantime UD olacaktır. Çünkü anti virüs offsetleri taradığında zararlı offsetleri gözden kaçıracaktır ve deşifre edemeyecektir.

Eğer programın görevini yani yaptığı işlemleri değiştirmeden ve yaptığı işlemlere engel olmadan, algoritmasını(programın çalışma mantığı) değiştirirsek Runtime UD yapmış oluruz. Çünkü programın algoritması değiştiğinde veya gizlendiğinde kodları da değişecektir dolaylı olarak da offsetleri değişecektir. Aynı zamanda kayıt defteri, ağ hareketlenmeleri gibi yaptığı işlemler değişecek veya gizlenecektir. Bu durumda anti virüsün tespit edebileceği şüpheli hareketleri gizlemiş olacağız ve program deşifre olmayacaktır.

Kısacası programın kaynak kodlarını gizlemek Scantime UD, programın algoritmasını gizlemek Runtime UD yapar.


Scantime UD yönteminin mantığı nedir?
Hemen yukarıda bahsettiğim gibi, Scantime UD yönteminin mantığı kaynak kodları dolayısıyla offsetleri gizlemektir.
Zararlı Kod
Zararlı Kod
Zararlı Kod
Zararlı Kod
Zararlı Kod
Yukarıdaki tablo bizim programımızın kodları olsun. Yani programımız tüm kodları zararlı kodlardan oluşmaktadır. Bu programın yakalanması sizce de çok basit değil mi?
Gereksiz Kod
Zararlı Kod
Zararlı Kod
Zararlı Kod
Gereksiz Kod
Peki, programımızın kodları bu şekilde olsa ne olurdu? Bence hala yakalanırdı.

Gereksiz Kod
Gereksiz Kod
Zararlı Kod
Gereksiz Kod
Gereksiz Kod
Ya böyle olsaydı ne olurdu? Baya bir gelişme var, baya bir kendisini saklardı bence.


Gereksiz Kod
Zararlı
Gereksiz Kod
Kod
Gereksiz Kod
İşte bu en güzeli değil mi? Zararlı kodlar bir anlam bile taşımıyor ama programın bütününde zararlı kodların işlevi büyük.

Yukarıda anlatmaya çalıştığım şudur. Programın kodları ne kadar alışılmışın dışında olursa, anti virüsler zararlı kodları o kadar gözden kaçıracaktır. 

Ve zararlı kodlarımız ne kadar az olursa program o kadar az saldırgan görünecektir ve deşifre olmayacaktır. Burada bizim yapmamız gereken görev, olabildiğince az miktarda zararlı kodlarla işlem yaptırmak olacaktır.

Runtime UD yönteminin mantığı nedir?
Runtime UD yöntemlerinin algoritmayı gizleyerek yapılacağından yukarıda bahsetmiştim. Anti virüslerin ağ hareketlenmeleri, dosya ve klasör işlemleri ve kayıt defterinde yapılan değişiklikleri kontrol ettiğinde de bahsetmiştim. Bizim görevimiz programın yaptığı işlemleri değiştirmeyerek, yaptığı görevlerin aynısını fakat bunu farklı yollarla yapmasını sağlamak olacaktır.



Yukarıda şekilde kırmızı okun zararlı algoritma, yeşil okun ise deşifre edilmemiş algoritma olduğunu hayal ediniz.
Yukarıdaki şeklin anlatmak istediği şudur. Programa yaptırdığınız işlemler alışılmışın dışında, daha farklı yollar olmalıdır. Programın yaptığı işlemlerin değişmesiyle, programın çalışma mantığı dolayısıyla algoritması değişmektedir. Bu sayede anti virüsler programın çalışma mantığını deşifre edemeyecektir.

Runtime UD yöntemleri için birkaç ipucu?

1-Programınıza çok fazla zararlı kod eklemeyin. Yapması gereken işlem ne ise o kadar zararlı kod ekleyin. Hatta yapacağı görevi en az zararlı kodlarla yapmasını sağlayın.

2-Klasik saldırı yöntemlerini iyi bilin ki onlardan farklı yöntemlerle işlemlerinizi programa yaptırabilesiniz.
3-Program açıldığı anda saldırıya geçmesin. Belli bir süre sonra saldırıya geçsin. Zararlı kodları adım adım işlesin. Tüm zararlı kodları aynı anda çalıştırmasın.

Runtime UD ve Scantime UD yöntemleri nelerdir?
İşte buradan sonrasında yalnızsınız. Benim anlattıklarım işin mantığına yönelikti. Temel yöntemlerden yine bahsedeceğim fakat etkili yöntemler uygulamak istiyorsanız, bu yöntemlerin üzerine çıkmalısınız.

Klasik yöntemlerin üzerine nasıl çıkılır?
Hayal gücünüzü geliştirmelisiniz. İster Runtime UD olsun ister Scantime UD olsun programın çalışmasını bozmadan yaptığınız her işlem UD yöntemini kapsamaktadır. İşte bu durum Undetect dünyasının ne kadar geniş olduğunu ortaya sermektedir.

Orijinal UD yöntemlerini geliştirmek için dikkat edilecekler?

1-Çok iyi bir şekilde programlama öğrenmelisiniz, algoritmada ve kodlarda programı bozmadan kolayca değişiklik yapabilmelisiniz.
2-Anti virüslerin programları nasıl taradığını çok iyi bilmelisiniz.

3-Her UD yöntemi merdivenin birer basamağıdır. Bu yüzden var olan yöntemlerin mantığını kavrayamazsanız, en üst basamaklara çıkamazsınız.
İlk madde olan çok iyi programlama bilmeyi size bu dokümanda anlatmam imkânsız. Programlama apayrı bir dünyadır ve aniden, birkaç bilgi ile öğrenmek imkânsızdır. Uzun emekler sonucu programlamanın mantığını kavrayarak öğrenebilirsiniz. Ama ikinci ve üçüncü maddeye kısaca değineceğim.

Anti virüsler temel haliyle nasıl çalışır?
Daha önceden bahsettiğim gibi, programın offsetlerini ve algortimasını tarayarak çalışmaktadır. Bu ikisinin üzerinde değişiklik yaptığımızda UD işlemini gerçekleştirmiş oluyorduk. Programın çalışmasını bozmadan yaptığımız her işlemde UD yöntemini kapsamaktaydı.

Offsetleri ve algoritmaları anti virüs nasıl tespit ediyor?
Program çalıştığında, anti virüs programın yaptığı işlemleri kontrol ediyor. Programın sadece başlangıca bulaşması anti virüs tarafından tehlike oluşturmazken, bununla birlikte görev yöneticisini devre dışı bırakmak, port açmak gibi işlemler bir arada yapıldığında anti virüs programımızı deşifre edecektir.
Bu yüzden yapılan işlemler olabildiğince az ve klasik yöntemlerden farklı olmadır. Çoğu defa tanık oluyorum. Kişi spyware(casus yazılım) kodluyor. Hata mesajı verdiriyor, görev yöneticisini devre dışı bırakıyor, sistem geri yüklemeyi kapatıyor. Sen casus yazılım mı kodluyorsun yani? Benim bildiğim casus yazılım kendisini kullanıcıya hissettirmez. Casusluk yapar, sisteme zarar vermez. Gereğinden fazla zarar vermek iyi bir şey değildir.

Anti virüs yazılımları, anti virüs firmalarına rapor göndermektedir. En az iki defa zararlı diye gönderilmiş raporlar anti virüs firmalarının laboratuvarlarında incelenmeye alınır. Bu incelemede daha önceden söylediğim gibi programın offsetleri incelenir, programın yaptığı işlemler tespit edilir. 
Daha sonra inceleme sonucunda zararlı olduğu tespit edilirse, anti virüs firmasının havuzuna programın Hex imzası eklenir. Daha sonra bilgisayarlarımızdaki anti virüslerin kendisini güncellemesi ile bu Hex imzaları bilgisayarımızdaki anti virüsün veri tabanına eklenir.
Anti virüs yazılımımız, offsetleri tekrar taradığında veri tabanındaki zararlı Hex imzası ile taranan programın Hex imzasını eşitlemeye çalışır. Eğer eşitlenirse anti virüs programımızı etkisiz bırakarak, hemen karantinaya taşıyacaktır. Yani programımız Detect(deşifre) olmuştur.
Eğer rapor gönderen anti virüslerle programımızı tararsak kendi ellerimizle programımızı kurban etmiş oluruz. Program kısa sürede Detect olacaktır ve yaptığımız UD işlemleri boşa gidecektir.

Temel UD yöntemleri nelerdir?
Gereksiz Kod – Scantime
Gereksiz Algoritma – Runtime
Not: Ben vb.net bildiğim için yöntemleri bu dil üzerinden anlatacağım fakat siz benim yaptığım işlemleri değil de ne amaçla yaptığıma odaklanırsanız UD işleminin mantığını kavramış olursunuz. Bu sayede bildiğiniz programlama diline bu yöntemleri entegre edebilirsiniz.

1-“\” , “.exe” gibi şüphe uyandıracak değerleri şifreleme algoritmaları ile şifrelemelisiniz.

2-Projenize gereksiz formlar, gereksiz kod sayfaları ekleyin.

3-Projenizin assembly bilgilerini ve iconunu değiştirin.

4-Projenizde değişken (Dim) ve sabitlerin (Const) isimlerine anlamsız isimler verin.

5-Projenize anlamsız algoritmalar ile anlamsız kodlar ekleyin. Bu eklediğiniz anlamsız algoritmaları ve kodları, zararlı kodlarınızla iliştirin.

6-Projenizdeki apilerin sıralamasını değiştirin ve sahte api ekleyin.

7-Function ve Sub isimlerinize anlamsız isimler verin.

8-Projenizin derlendiği dizini değiştirin. Örneğin, “c:\” dizininde derleniyorsa, “d:\” dizininde derleyin.


Hangi editörleri kullanmalıyım?

1-Peid: Nesnenin en son ne yapılmış olduğunu gösteren programdır.

2-Hex Workshop: Programın offsetlerini gösteren ve bu offsetler üzerinde değişiklik yapabileceğimiz programdır.

3-OlyDbg(X0R): Bu programda Hex Workshop programına benzerlik göstermektedir. Offsetlerde değişiklik yapabilme imkânı sağlar.

4-Lord PE: Programımızı Hex editörleri ile işlem yaptığımızda çalışmadığı durumda, tekrardan çalışır duruma getiren programdır.

5-Av Fucker: Programın offsetlerini teker teker değiştirerek yeni dosya oluşturur. Sonra anti virüslere taratarak yakalanan offsetlere sahip programlar silinir. Bu sayede hem anti virüslere yakalanmayan offsete sahip program bulunur.

6-Res Hacker: Programın iconunu ve assembly bilgilerini değiştirebilme imkânı sağlar. DLL dosya eklememize de yaramaktadır.

7-Resource Tuner: Program hakkında geniş işlem yapabileceğimiz çok fonksiyonlu programdır.

8-UPX: Exe dosyalarını sıkıştırmaya yarayan programdır.

9-PE Explorer: Programımızda birçok değişiklik yapabilmemizi sağlayan programdır.

Yazının sonuna geldik. Olabildiğince başlangıç seviyesindeki bilgileri verdiğimi düşünüyorum. Bu işe başlamak isteyen arkadaşlar için rehber olacağını düşünmekteyim.

Tüm bu yazıyı PDF olarak indirmek istersen buraya (alternatif) tıkla. 

2 yorum :

  1. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  2. Benim paylaşımımı alıntı ibaresi olmadan kendi paylaşımınmış gibi sunman ne kadar sahih?

    YanıtlaSil