Son Zamanlarda Çıkan Flood Saldırısı Deneysel Fix

  • Konuyu açan Konuyu açan Reached
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 600

Reached

Geliştirici
Geliştirici
Emekli Üye
Usta Üye
Editör
Mesaj
838
Çözümler
29
Beğeni
822
Puan
839
Ticaret Puanı
0
Konuya az çok piyasadaki insanlar hakimdir, handshake/login phase'inde random size'lı packet atarak farklı bağlantılardan buffer size şişirip oyunu çökertiyorlar.

Her bağlantı için 65kb'lık bir buffer açılıyor.
C++:
Genişlet Daralt Kopyala
m_lpInputBuffer = buffer_new(MAX_INPUT_LEN);
Farklı desclerden çokça bu buffer doldurulduğunda kanal 4 gb memory limitine ulaşıp çöküyor.

Yaptığımız değişiklik handshake ve loginde oturum üstünden alınan toplam byte'ı kontrol edip (Simüle edildiğinde total 1.25kb bir veri akışı oluyor max @pasha37 <3) potansiyel alınacak veriden fazlaysa ipyi banlıyor. Bir host için belirlediğimiz bağlantıdan fazla bağlantı alırsak da ban yer.
Anlatımda unutulan yer: desc.cpp
C++:
Genişlet Daralt Kopyala
//Search
    SetPhase(PHASE_HANDSHAKE);
    StartHandshake(_handshake);

// Add above
    {

        desc_event_info* timeout_info = AllocEventInfo<desc_event_info>();
        timeout_info->desc = this;
        m_pkPhaseTimeoutEvent = event_create(phase_timeout_event, timeout_info, PASSES_PER_SEC(DESC_HANDSHAKE_TIMEOUT_SEC));

    }

// Search
m_pInputProcessor = &m_inputMain;

// Add under
event_cancel(&m_pkPhaseTimeoutEvent);
DESC_MANAGER::instance().DecUnauthCount(this);
 

Dosya Eklentileri

En son bir moderatör tarafından düzenlenmiş:
mantığı tam oturtamadığım için bir şey sormak istiyorum. kendi bilgisayarımda 4 tane client açıp girmek istedim bu durumda banlanıyor muyum banlanmıyor muyum?
 
mantığı tam oturtamadığım için bir şey sormak istiyorum. kendi bilgisayarımda 4 tane client açıp girmek istedim bu durumda banlanıyor muyum banlanmıyor muyum?
6. clientte evet banlanır ip, çoğu oyunda multi-farm block olduğu için zaten bunu farm block'a uydurabilirler + olarak çok şart bir şey değil. Buffer size kontrolü ile pek gerek kalmıyor, ekstra önlem.
 
Merhaba, elinize sağlık. Ancak şöyle bir sorun var. Analyze ve proccess kısmına bir işlem yapmamışsınız. Bu saldırıların analyze ve process kısımlarına geçmemesi gerekiyor. Bu şekilde kullanırsanız saldırı anında yine cpu çok yorulacaktır ve size %100 olarak söyleyebilirim ki cpu %100 olacaktır. Bu kısımlara da işlem yapın ve olabildiğince syserr ve syslog bastırmamaya çalışın çünkü bu yöntemle de cpuyu yormaya çalışıyorlar. Saniyede 30mb syserr yazdırdıkları zaman ister istemez cpu yine yoruluyor.
 
Merhaba, elinize sağlık. Ancak şöyle bir sorun var. Analyze ve proccess kısmına bir işlem yapmamışsınız. Bu saldırıların analyze ve process kısımlarına geçmemesi gerekiyor. Bu şekilde kullanırsanız saldırı anında yine cpu çok yorulacaktır ve size %100 olarak söyleyebilirim ki cpu %100 olacaktır. Bu kısımlara da işlem yapın ve olabildiğince syserr ve syslog bastırmamaya çalışın çünkü bu yöntemle de cpuyu yormaya çalışıyorlar. Saniyede 30mb syserr yazdırdıkları zaman ister istemez cpu yine yoruluyor.
Analyze'e gelmeden oluyor bu işlem, tam incelememişsiniz galiba, process kısmında işlem var. Siz gelen paketleri analyze etmeden önce bir desc olması gerekmekte, oyunları patlattıkları yöntem de zaten flood ile handshake'de sürekli desc oluşturup paketle inputbuffer'ı şişirmek. Ayrıca cpu'dan değil, ram max memory limitten çöküyor oyunlar 32-bit olduğu için.
 
Geri
Üst