Penligent Başlık

CTF'lerde Yapay Zeka Nasıl Kullanılır?

Yapay zeka ile CTF'lerde kötüleşmenin en hızlı yolu, modele bir otomat gibi davranmaktır. Komut istemini yapıştırın, bir yük bekleyin, bir terminale kopyalayın ve bir bayrak düşmesini umun. Bu, kötü alışkanlıklar oluşturmak için kolay mücadelelerde yeterince sık işe yarar. Sorun durumsal, gürültülü ya da biraz tuhaf hale geldiği anda başarısız olur.

CTF'lerde yapay zekayı kullanmanın daha iyi bir yolu, onu bir arama alanı sıkıştırıcısı olarak düşünmektir. İpuçlarını sizden daha hızlı sıralayabilir, bilmediğiniz sözdizimini açıklayabilir, kaba çözücü iskeletleri oluşturabilir, paket yakalamalarını özetleyebilir, çözümleyici çıktısını sade İngilizceye çevirebilir ve bir hipotezi diğeriyle karşılaştırmanıza yardımcı olabilir. Hala zayıf olduğu nokta, gerçek dünyada güçlü CTF oyuncularına para ödenen şeydir: neyin önemli olduğuna karar vermek, "makul" bir cevabın ne zaman yanlış olduğunu bilmek, uzun bir deneyler zinciri boyunca durumu korumak ve etkiyi anlatmak yerine kanıtlamak. Mevcut kamu araştırmaları da aynı yöne işaret ediyor. NYU'nun saldırı-güvenlik CTF'leri üzerine yaptığı çalışma, LLM'lerin bazı yarışma ortamlarında ortalama insan katılımcıyı yenebildiğini, ancak tam otomatik sonuçlarının düzensiz ve yüksek oranda kategoriye bağlı kaldığını ortaya koymuştur. Daha sonraki kıyaslama ve çerçeve çalışmaları, Cybench'in profesyonel CTF görev seti, Anthropic'in halka açık Cybench raporlaması ve daha yeni planlama tabanlı pentest araştırması aynı modeli göstermektedir: modeller daha iyi hale gelmektedir, ancak özerklik hala uzun ufuklu planlama, karmaşık muhakeme ve özel araç kullanımı konularında bozulmaktadır. (arXiv)

Bu boşluk oyunun tamamıdır. Yapay zekayı düşüncenin yerine değil de daha hızlı düşünmenize yardımcı olan bir takım arkadaşı olarak kullanırsanız, hemen faydalı hale gelir. Onu bir kahin olarak kullanırsanız, kazanılabilir bir mücadeleyi bir halüsinasyon jeneratörüne dönüştürür. Doğru zihniyet "Model bunu benim için çözebilir mi?" değildir. "Bu sorunun hangi kısımları bir modelin karar verici haline gelmeden hızlandırabileceği kadar tekrarlı, düşük kaldıraçlı veya format ağırlıklı?" Bu çerçeve, gerçek güvenlik testinin NIST SP 800-115 ve OWASP Web Güvenlik Testi Kılavuzu'nda nasıl tanımlandığı ile daha iyi uyum sağlar; her ikisi de rastgele araç ateşlemesinden ziyade planlama, teknik test, bulguların analizi ve hafifletmeyi vurgular. (NIST Bilgisayar Güvenliği Kaynak Merkezi)

CTF'lerde Yapay Zeka Doğru Uygulama Ortamıyla Başlar

İş akışı, yönlendirmeler veya araçlardan önce, pratik yapmak için yasal bir yere ihtiyacınız vardır. Web ağırlıklı yapay zeka deneyleri için PortSwigger'ın Web Güvenlik Akademisi en temiz seçeneklerden biridir çünkü ücretsizdir, açıkça güvenli ve yasal olarak çerçevelenmiştir ve belirsiz meydan okuma açıklamaları yerine somut güvenlik açığı sınıfları etrafında düzenlenmiştir. picoCTF de aynı derecede kullanışlıdır çünkü kriptografi, web istismarı, adli tıp, ikili istismar ve tersine çevirme konularında yapılandırılmış öğrenme materyali ile pratik ve rekabeti eşleştirir. Hack The Box, canlı CTF oyunu için resmi bir CTF platformu da işletmektedir. Yapay zeka iş akışınızın baskı altında nasıl davrandığını test etmek istiyorsanız, bu ortamlar yetkisiz test çizgisini aşmadan size hızlı geri bildirim sağlar. (PortSwigger)

Bu ayrım, sıradan not alma veya çözücü komut dosyalarına kıyasla yapay zeka için daha önemlidir. Bir insan genellikle bir meydan okuma örneğinden gerçek bir varlığa doğru sürüklendiğini anlayabilir. Bir model bunu yapamaz. Bir ajana bir URL ve "her şeyi listele" gibi muğlak bir talimat verirseniz, neyin yarışma altyapısı, neyin üretim, neyin bir nedenden dolayı oranla sınırlı olduğu ve neye dokunmanıza gerçekten izin verildiği konusunda hiçbir içsel duyguya sahip değildir. İyi CTF hijyeni her zaman kapsam farkındalığı gerektirmiştir. İyi bir AI CTF hijyeni bunu iki kez gerektirir.

Pratik bir kural, model dahil olmadan önce her mücadeleye dört şeyi yazarak başlamaktır: platform, tam hedef örnek, ait olabileceğini düşündüğünüz zorluk kategorisi ve yerel olarak sahip olduğunuz dosya veya eserler kümesi. Kulağa önemsiz geliyor ama şaşırtıcı miktarda saçmalığı önlüyor. Modelin bitişik uç noktalar icat etmesini, iki kategoriyi birbirine karıştırmasını veya gerçekte sahip olduğunuz eser setine uymayan araçlar önermesini önler. Ayrıca daha sonra hata ayıklamanızı kolaylaştırır çünkü hatanın zorluktan mı, modelden mi yoksa kendi kötü varsayımlarınızdan mı kaynaklandığını anlayabilirsiniz.

İş Akışının Kontrolünü Kaybetmeden CTF'lerde Yapay Zeka Nasıl Kullanılır?

En güçlü AI CTF iş akışları en iyi anlamda sıkıcıdır. Bir yapıları vardır. Ne olduğunu kaydederler. Aynı adımı daha sonra yeniden çalıştırmayı kolaylaştırırlar. NIST SP 800-115, teknik güvenlik testlerini planlama, testleri yürütme, bulguları analiz etme ve azaltma stratejileri geliştirmeyi içeren bir süreç olarak tanımlar. OWASP'ın test kılavuzu da aynı şekilde testleri birbirinden kopuk numaralar dizisi olarak değil, aşamalı bir disiplin olarak ele alır. Bu model CTF çalışmalarına çoğu insanın sandığından daha iyi uymaktadır. Bir bayrak, çok daha büyük bir döngünün yalnızca son satırıdır: alım, sınıflandırma, deney tasarımı, yürütme, doğrulama ve kayıt tutma. (NIST Bilgisayar Güvenliği Kaynak Merkezi)

Aşağıdaki tablo, yapay zekanın bu döngüdeki rolünü düşünmenin en basit yoludur.

CTF aşamasıYüksek değerli yapay zeka çalışmalarıİnsan hala sahipOrtak arıza modu
Alım ve sınıflandırmaMeydan okuma metnini özetleyin, muhtemel kategoriyi etiketleyin, dosya adlarını, uç noktaları, protokolleri, kodlamaları çıkarınKategori tahmininin güvenilir olup olmadığına karar verinYanlış ilk sınıflandırma tüm iş akışını yanlara doğru gönderir
Keşif ve eser ayrıştırmaAyrıştırıcılar oluşturun, ipuçlarını kümeleyin, hızlı triyaj komutları önerin, çıktıları normalleştirinGerçekten test etmeye değer olanı seçinAşırı numaralandırma ve gürültülü çıkmaz sokaklar
Hipotez oluşturmaMuhtemel hata sınıfları, çözücü yönleri veya istismar aileleri önerinHipotezleri sıralayın ve bir sonraki minimal deneyi seçinKendinden emin ancak desteksiz iddialar
Exploit veya çözücü iskelesiTaslak komut dosyaları, yük şablonları oluşturma, araç çıktısını çevirme, koşum takımları oluşturmaHer temel varsayımı doğrulayın ve duruma göre ayarlayınKırılgan kod ve halüsinasyonlu adımlar
Doğrulama ve yazmaİzleri yeniden biçimlendirin, farklılıkları özetleyin, senaryoları temizleyin, notları taslak haline getirinKanıtı onaylayın ve yanlış pozitifleri reddedinKanıt olmadan anlatıyı "kanıta" dönüştürmek

Bu tablo, kıyaslama literatürünün ve resmi araç dokümanlarının zaten ima ettiği şeylerin bir sentezidir. LLM'ler görev yapılandırılmış, yerel ve metin ağırlıklı olduğunda rahattır. Uzun bir planı sürdürmeleri, birkaç özel aracı doğru kullanmaları ve sürüklenmeden kısmi başarısızlığa uyum sağlamaları gerektiğinde çok daha az rahattırlar. NYU CTF çalışması kategoriye özgü performans boşluklarını gösterirken, daha sonraki kıyaslama ve planlama araştırmaları baskı noktaları olarak araç kullanımı ve uzun menzilli tutarlılığa işaret etmeye devam etti. Araç dokümantasyonu aynı hikayeyi ters yönden anlatıyor: pwntools, angr, Burp, TShark, Ghidra ve Volatility'nin hepsi güçlüdür çünkü hassas, incelenebilir ilkelleri ortaya çıkarırlar. Yapay zeka en çok bu ilkellerin yerine değil, üstüne oturduğunda yardımcı olur. (arXiv)

Beş döngülü basit bir iş akışı hemen hemen her kategoride işe yarar. İlk olarak, yorumlama yapmadan sorun gerçeklerini toplayın: açıklama metni, ekler, URL'ler, ikili dosyalar, paket yakalamalar, karmalar, ekran görüntüleri, hizmet afişleri ve ilk yanıtlar. İkinci olarak, modelden sorunu sınıflandırmasını ve çözümleri değil bilinmeyenleri listelemesini isteyin. Üçüncü olarak, bir hipotezi ortadan kaldırabilecek en küçük deneyi tasarlayın. Dördüncü olarak, bu deneyi çalıştırın ve tam çıktıyı yakalayın. Beşinci olarak, modelden beklenti ile gerçeklik arasındaki deltayı açıklamasını isteyin. Bu beş adımı tekrarlarsanız, modelin bayrağa doğru serbest çağrışım yaptığı tek bir uzun konuşma yapmaya çalışmaktan daha iyi sonuçlar elde edersiniz.

CTF'lerde Gerçekten İşe Yarayan Bir İstem Modeli

Çoğu kötü AI CTF oturumu kötü bir istemle başlar. En kötü versiyonu tek satır uzunluğunda, aşırı umut yüklü ve tüm yapıdan yoksundur: "Bu web zorluğunu benim için çözün." Bu, modele ne bildiğiniz, hangi eserlerin var olduğu, hangi eylemlere izin verildiği veya bir şeyi gerçekleştirmeden önce hangi kesinlik düzeyine ihtiyacınız olduğu hakkında hiçbir şey söylemez. Model bu boşlukları bir şekilde doldurmak zorunda olduğundan, genellikle bunları kurgu ile doldurur.

Daha iyi bir istem beş bloktan oluşur. İlk blok şudur gerçekler. Buraya yalnızca gözlemlenebilir verileri koyun: meydan okuma metni, dosya adları, çıktı parçacıkları, başlıklar, montaj parçaları, PCAP özetleri veya gördüğünüz tam hata mesajı. İkinci blok ise bilinmeyenler. Henüz bilmediklerinizi belirtin. Üçüncü blok izin verilen eylemler. Eğer sadece bir hipotez istiyorsanız, söyleyin. Eğer bir Python yardımcı betiği istiyorsanız, söyleyin. Kaba kuvvet istemiyorsanız, bunu söyleyin. Dördüncü blok gerekli çıktı şekli. Sıralı hipotezler, güven düzeyleri, minimum doğrulama adımları veya kısa bir çözücü iskelesi isteyin. Beşinci blok durma koşulları. Gerçek uygulama veya insan doğrulamasının gerekli olduğu bir noktaya ulaştığında modele durmasını söyleyin.

İşte kategoriler arasında iyi çalışan bir temel şablon:

Yetkili bir CTF mücadelesine yardım ediyorsunuz.

Gerçekler:
- Platform: picoCTF
- Kategori tahmini: web
- Hedef: yalnızca meydan okuma örneği URL'si
- Gözlenen davranış:
  - GET / 200 döndürür
  - /robots.txt var
  - POST /api/check-stock XML kabul eder
  - Aynı stok talebinin tekrarlanması hiçbir şeyi değiştirmez
- Eserler:
  - Bir Burp istek ve yanıt çifti
  - Bir ffuf sonuç dosyası
  - Yönetici sayfasının bir ekran görüntüsü

Bilinmeyenler:
- Hatanın XXE, SSRF veya her ikisi olup olmadığı
- Herhangi bir dahili ana bilgisayar adına erişilebilir olup olmadığı
- Yanıt farklılıklarının anlamlı mı yoksa gürültü mü olduğu

İzin verilen eylemler:
- Olası hata sınıflarını açıklayın
- Sonraki en küçük 3 doğrulama adımını önerin
- Minimal bir Python istek betiği taslağı
- Başarılı olacağınızı varsaymayın
- Kanıtlar desteklemediği sürece bir bayrağa ulaşılabileceğini iddia etmeyin

Gerekli çıktı:
1. Güven puanları ile sıralanmış hipotezler
2. Her bir hipotezi destekleyen kanıtlar
3. Hipotez başına en az bir sonraki deney
4. Sadece gerekirse kısa bir Python betiği
5. Hala doğrulanması gereken varsayımların bir listesi

Bu tür bir istem iki şeyi iyi yapar. Modeli kısıtlar ve daha sonra yapacağınız incelemeyi hızlandırır. Tahminlerden oluşan bir duvarı okumak yerine, bir çalışma kuyruğu elde edersiniz. Ayrıca modelin meydan okuma içeriğini talimat olarak ele alma riskini de azaltırsınız. OWASP'ın hızlı enjeksiyon kılavuzu burada doğrudan ilgilidir. Kuruluş, istem enjeksiyonunu, kullanıcı veya harici girdilerin modelin amaçlanan davranışını değiştirmesinden kaynaklanan bir güvenlik açığı olarak tanımlar ve özellikle güvenilmeyen içeriğin, düşmanca testlerin ve harici girdilerin sınır farkındalıklı kullanımının açıkça ayrılmasını önerir. CTF bağlamında, meydan okuma metni, indirilen dosyalar, web sayfaları, yazılar ve hatta eserlerin içindeki gizli dizelerin tümü güvenilmeyen içerik olarak sayılır. (OWASP Hile Sayfası Serisi)

Bu son noktayı hafife almak kolaydır. CTF'lerde yapay zeka kullandığınızda, zorluk sadece saldırdığınız şey değildir. Aynı zamanda modelinize saldıran girdinin bir parçasıdır.

CTF'lerde Yapay Zeka Nasıl Kullanılır?

Web CTF'lerde Yapay Zeka Nasıl Kullanılır?

Web CTF'leri yapay zekanın kendini en üretken hissettiği yerlerdir ve insanların dikkatsiz davranmasının nedeni de tam olarak budur. Model, tanıdık web hata modellerini tanımada iyidir. PortSwigger'ın akademisi, SQL enjeksiyonu, XXE, SSRF, yol geçişi ve sunucu tarafı şablon enjeksiyonu dahil olmak üzere birçok web CTF'sine hakim olan aynı sınıfları kapsar. OWASP'ın mevcut Top 10'u hala enjeksiyonu web uygulamaları için standart farkındalık setine yerleştirmektedir. Bunların hiçbiri modelin hatayı tek bir ekran görüntüsünden güvenilir bir şekilde tespit edebileceği anlamına gelmez. Bu, arama alanını daraltmak için yeterli kanıta sahip olduğunuzda zengin bir desen kütüphanesinin mevcut olduğu anlamına gelir. (PortSwigger)

Web CTF'lerindeki ilk hata, bir temel oluşturmadan önce modelden bir güvenlik açığı sınıfı istemektir. Sıkıcı gerçeklerle başlayın. Hangi rotalar var. Hangileri yönlendiriyor. Hangi parametrelerin yansıtıldığı. Hangi içerik türlerinin kabul edildiği. Uygulamanın GET'e karşı POST, JSON'a karşı form verisi, XML'e karşı JSON ya da bir cookie'ye karşı diğeri için farklı davranıp davranmadığı. Ağa maruz kalma varsa, Nmap hala ana bilgisayar ve hizmet keşfi için doğru ilkeldir. Dokümanları, port taramasının temelde erişilebilir hizmetleri bulmakla ilgili olduğu ve portların ikiden fazla durumu olduğu konusunda oldukça nettir. Bu önemlidir çünkü filtrelenmiş bir bağlantı noktası ve kapalı bir bağlantı noktası çok farklı sonraki adımlar anlamına gelir. Sürüm tespiti çalıştığında, Nmap size açık portların arkasında hangi hizmet ailelerinin olabileceğini de söyleyebilir. (Nmap)

İçerik keşfi için ffuf, bir AI iş akışına gerçek bir kaldıraç sağlamanın en kolay yollarından biri olmaya devam ediyor çünkü araç basit, hızlı ve yapılandırılmış. Resmi proje bunu hızlı bir web fuzzer olarak tanımlıyor ve içerik keşfi, vhost keşfi, parametre fuzzing ve POST veri fuzzing gibi yaygın kullanımları belgeliyor. Bu da onu hedeflenen kelime listelerinin ve eşleşme kurallarının model destekli oluşturulması için uygun hale getirir, özellikle de zorluk veya uygulama çerçevesinden bazı ipuçlarına sahip olduktan sonra. (GitHub)

Asgari düzeyde yetkili bir içerik keşif çalışması şöyle görünebilir:

ffuf -u https://challenge-instance/FUZZ \
     -w ./wordlists/common-web.txt \
     -mc 200,204,301,302,307,401,403 \
     -fc 404 \
     -of json \
     -o ffuf-results.json

AI bu komuttan önce ve sonra kullanışlıdır, onun yerine değil. Çalıştırmadan önce, görev başlığındaki ipuçlarından, JavaScript değişken adlarından veya daha önce gördüğünüz rota adlarından küçük bir temalı kelime listesi oluşturabilir. Çalıştırmadan sonra, sonuçları olası auth uç noktaları, olası yönetici yolları, statik varlıklar, API önekleri ve çıkmaz sokaklar olarak kümeleyebilir. Yapmaması gereken şey ise size şunu söylemektir /debug-old "muhtemelen savunmasızdır" çünkü adı kulağa ilginç geliyor.

İlginç bir trafik bulduğunuzda, Burp ağırlık merkezi haline gelir. Burp Repeater'ın var olmasının tek bir nedeni vardır: bir şey öğrenene kadar ilginç bir HTTP veya WebSocket mesajını değiştirmek ve yeniden göndermek. Kod çözücü, kodlamaları dönüştürmek ve tanımlamak için vardır. Comparer, neredeyse aynı HTTP mesajları da dahil olmak üzere benzer veri parçalarını farklılaştırmak için var. Bu üç araç, yapay zekanın web CTF'lerinde kullanılması gereken yöntemle neredeyse mükemmel bir şekilde eşleşiyor: Kontrollü deneyler için tekrarlayıcı, dönüştürme ve normalleştirme için kod çözücü, disiplinli önce ve sonra muhakemesi için karşılaştırıcı. (PortSwigger)

Bir modelin yardımcı olmasını istiyorsanız, ona eşleştirilmiş gözlemler verin. Normal talebi ve anormal talebi gösterin. Değişmemiş yanıtı ve değişmiş yanıtı gösterin. Sadece bir parametre değiştikten sonra 403 döndüren isteği ve 200 döndüren isteği gösterin. İzole eserler yerine deltalar sunduğunuzda modelin muhakeme kalitesi önemli ölçüde artar.

İşte bu noktada küçük bir Python koşum takımı zaman kazandırabilir. picoCTF'nin kendi primer'i, meydan okuma çalışması için Python'da HTTP isteklerini öğretir ve bu temel alışkanlık şaşırtıcı derecede iyi ölçeklenir. Bir web CTF için amacınız dev bir istemci yazmak değildir. Tekrarlanabilir bir mikro deneyi kodlamak içindir, böylece her seferinde bir değişkeni değiştirebilir ve çıktıyı saklayabilirsiniz. (CTF Primer)

import http.client
import json

HOST = "challenge-instance"
PATH = "/api/check-stock"

xml_payloads = [
    """
       11"",
    """
       <!DOCTYPE foo [  ]>
       &xxe;1""
]

sonuçlar = []

for payload in xml_payloads:
    conn = http.client.HTTPSConnection(HOST)
    conn.request(
        "POST",
        YOL,
        body=payload,
        headers={
            "Content-Type": "application/xml",
            "User-Agent": "ctf-lab-test"
        }
    )
    resp = conn.getresponse()
    body = resp.read().decode(errors="replace")
    results.append({
        "durum": resp.durum,
        "neden": resp.neden,
        "body_prefix": body[:400]
    })
    conn.close()

print(json.dumps(results, indent=2))

Bu kod heyecan verici değildir ve bu yüzden iyidir. Size modelin üzerinde mantık yürütebileceği yapılandırılmış çıktılar verir. "Bu XXE mi?" diye sormak yerine, "Neden iki numaralı yük bir numaralı yükten farklı bir ayrıştırma hatası ve gövde uzunluğu artışı üretiyor?" diye sorabilirsiniz. Bu, güçlü web oyuncularının gerçekte nasıl düşündüğüne çok daha yakındır.

Yapay zeka web CTF'lerinde iyi kullanıldığında, kategori ayrıştırmasını hızlandırır. SQLi klasik bir örnektir. PortSwigger SQL enjeksiyonunu, bir uygulamanın veritabanına yaptığı sorgulara müdahale olarak tanımlar, bu da verileri açığa çıkarabilir veya değiştirebilir. Bu kesin bir tanımdır, ancak sorunun bir dize bağlamı mı, sayısal bir bağlam mı, kör bir boolean kanalı mı, bir hata kanalı mı yoksa bant dışı bir yol mu kullandığını size söylemez. Model, olasılıkları sıralamanıza yardımcı olabilir, ancak yine de bağlamı deneysel olarak belirlemeniz gerekir. (PortSwigger)

Aynı şey XXE ve SSRF için de geçerlidir. PortSwigger'ın tanımları önemlidir çünkü size ne arayacağınızı söylerler. XXE genellikle XML işleme ile başlar ve sunucu tarafındaki dosyaları veya dahili sistemleri açığa çıkarabilir. SSRF, sunucu sizin adınıza bir istekte bulunduğunda başlar ve bazen localhost veya dahili uç noktalara doğru itilebilir. PortSwigger'ın laboratuvarlarında, bu sınıflar öğretim için temiz bir şekilde ayrılmıştır, ancak CTF'ler genellikle bunları birbirine karıştırır. Harici varlık desteğine sahip bir XML ayrıştırıcı, varlık dahili bir meta veri veya yönetici uç noktasına işaret ediyorsa bir SSRF yolu haline gelebilir. Yapay zeka bu gibi durumlarda gerçekten faydalıdır çünkü "XML lavabosu var" ile "dahili getirme mümkün olabilir" arasındaki en kısa zinciri önerebilir, ancak bunu kanıtlamak için yine de sunucu yanıtına ihtiyacınız vardır. (PortSwigger)

Yol geçişi ve SSTI bir başka iyi çifttir. Yol geçişi, amaçlanan dizin sınırının dışındaki dosyaları okumakla ilgilidir. SSTI ise kullanıcı kontrollü girdinin bir şablon motoru tarafından kod yürütülmesine yol açabilecek şekilde yorumlanmasıyla ilgilidir. Her ikisi de dikkatli gözlemi ödüllendirir. Yol geçişi zorlukları genellikle normalleştirme, filtreleme veya beklenmedik dosya yolları ile ilgilidir. SSTI zorlukları genellikle motor tanımlama, sözdizimi tuhaflıkları ve sandbox varsayımlarına dayanır. Yapay zeka, hangi motor ailesinde olduğunuzu bildiğinizde aday sözdizimi veya bypass kalıpları oluşturmada iyidir. Belirsiz bir render hatasından motor ailesine karar vermekte kötü. (PortSwigger)

Yapay zeka kullanıcıları için en zor web CTF tuzağı iş mantığıdır. Modeller, tanıdık kalıpları bulabildikleri için adlandırılmış güvenlik açıklarını severler. Zorluk bir iş akışı hatası, bir ayrıcalık sınırı, bir oturum karışıklığı veya yalnızca birkaç sıradan istekten sonra görünür hale gelen bir durum geçişi olduğunda daha fazla mücadele ederler. Bu gibi durumlarda, yapay zekayı muhasebe için kullanın. Ondan bir durum tablosu oluşturmasını isteyin. Hangi çerezlerin hangi eylemlerden sonra göründüğünü özetlemesini isteyin. Rotaları kimlik doğrulama durumuna göre gruplamasını isteyin. Yanıt gövdelerini ve başlık kümelerini karşılaştırmasını isteyin. Durum makinesi zaten kağıt üzerinde olana kadar ondan bir kök neden istemeyin.

Gevşek bir sohbet sekmesi yerine özel bir AI pentest çalışma alanı kullanırsanız, aynı ilkeler yine de geçerlidir. Penligent'in herkese açık dokümanlarında operatör tarafından oluşturulan görevler, yapılandırılabilir Python ve Bash çalışma zamanları, Kali'de zaten yüklü olan araçları çağırma yeteneği nmap ve HİDRAve yaygın araç konfigürasyonlarının tek tıklamayla içe aktarılması. Ürün sayfasında ayrıca düzenlenebilir istemler, kapsam kontrolü, birçok endüstri aracı için destek ve kanıt öncelikli sonuçlar vurgulanmaktadır. Bir web CTF laboratuvarında, bu özellikler gösterişli oldukları için değil, bağlam dağınıklığını azalttıkları için önemlidir. Oluşturulan komut dosyalarını, araç çıktılarını ve kendi manuel doğrulamanızı terminal geçmişine ve sohbet pencerelerine dağıtmak yerine tek bir iş akışında tutabilirsiniz. (Penligent)

CTF'lerde Yapay Zeka Nasıl Kullanılır?

İkili İstismar CTF'lerinde Yapay Zeka Nasıl Kullanılır?

İkili sömürü, yapay zekanın uzaktan en zeki ve yakından en zayıf göründüğü yerdir. Uzaktan bakıldığında, bir LLM için mükemmel görünüyor. Kodunuz, derleyici çıktınız, montajınız, bellek hatalarınız ve Python komut dosyalarına ihtiyacınız var. Yakından bakıldığında, işin zor kısmı metin üretmek değildir. Hedef süreçle hassas bir etkileşim ve modelin genellikle düzelttiği ayrıntılara acımasızca dikkat etmektir.

Resmi pwntools dokümanları size kütüphanenin neden standart hale geldiğini tam olarak açıklar: süreçlerle, soketlerle ve uzak hizmetlerle konuşmak için tek tip bir yol sunar. Corefile dokümanları bir başka önemli noktaya daha değiniyor. Çekirdek dökümleri sadece manuel hata ayıklama için değil, otomasyon için de kullanışlıdır. Aritmetiği elle yapmadan ofsetleri hızlı bir şekilde hesaplamak için bir çökme adresi ve döngüsel bir desen kullanabilirsiniz. Bu, insan muhakemesi ile yapay zeka ivmesi arasında ideal bir geçiş noktasıdır. (Pwntools Belgeleri)

Pwn'de yapay zeka için pratik bir model, çalışmayı dört katmana bölmektir. İlk olarak, model ikiliyi yüksek düzeyde açıklar: korumalar, olası giriş yolu, şüpheli işlevler ve olası bellek bozulması sınıfı. İkinci olarak, sınıfı doğrulamak için kısa deneyler yaparsınız. Üçüncü olarak, model bir pwntools iskelesi taslağı hazırlar. Dördüncü olarak, normal bir istismar geliştiricisi gibi iskelede hata ayıklaması yaparsınız. Önemli ayrıntı, istismarın asla modele "ait" olmamasıdır. Sadece model tarafından hazırlanır.

Yetkili bir görev için minimal bir pwntools iskelesi şöyle görünebilir:

from pwn import *

context.binary = ELF("./chall")
context.log_level = "info"

HOST = "challenge-instance"
PORT = 31337

def start():
    if args.REMOTE:
        return remote(HOST, PORT)
    return process(context.binary.path)

io = start()

# Örnek etkileşim, mücadeleye özgü mantık ile değiştirin
io.recvuntil(b"> ")
io.sendline(b "A" * 128)

# Triyaj için çıktıyı görünür tutun
print(io.recvall(timeout=1).decode(errors="replace"))

Bu örnek kasıtlı olarak sadedir. Bu bir istismar değil. Bu bir koşum takımı. Birçok pwn mücadelesinde, ihtiyacınız olan ilk şey bir ROP zinciri değildir. Programı sürmenin, nerede çöktüğünü izlemenin ve küçük girdi değişimleri altında çıktıyı karşılaştırmanın güvenilir bir yoludur.

Sorun basit bir taşma olduğunda, corefiles çökmeyi bir ofsete dönüştürmenize yardımcı olur. pwntools'un dokümanları bu iş akışını açıkça göstermektedir: döngüsel bir kalıp oluşturun, süreci bir kez çökertin, çekirdek dökümünü yükleyin ve kalıbın nerede bittiğini kontrol edin. (Pwntools Belgeleri)

from pwn import *

payload = cyclic(256)
p = process(["./chall", payload])
p.wait()

core = Coredump("./core")
offset = cyclic_find(core.eip if context.bits == 32 else core.rip)
print(f "Ofset: {offset}")

Yapay zeka, özellikle çökme ofsetini, güvenlik özelliklerini ve savunmasız işlev için derleyici çıktısını beslediğinizde, bu adımları bir araya getirme konusunda iyidir. "Muhtemelen 72 bayttan sonra RIP'yi kontrol etmeniz gerekiyor, işte daha temiz bir koşum takımı, işte bir yükün nasıl oluşturulacağı düzve burada ret2win'e karşı ret2libc için bir kontrol listesi var." Çökmenin bir yığın kanarya kontrolünden önce olup olmadığını, bir off-by-one'ın varsayımlarınızı bozacak şekilde hizalamayı değiştirip değiştirmediğini veya uzak hizmetin yerel libc'nizden farklı davranıp davranmadığını bilmekte daha az iyidir.

Bu nedenle angr yararlı olabilir, ancak yalnızca belirli anlarda. Angr dokümanları sembolik yürütmeyi, sabit somut girdiler yerine sembolik değişkenler ve kısıtlama çözme kullanarak çoklu yürütme yollarını keşfetmek olarak tanımlar. CTF'ler için, ikili gerçekten kılık değiştirmiş bir kısıtlama sistemi olduğunda bu güçlüdür: giriş baytları üzerinde bir kontrol labirenti, gömülü bir başarı dalı veya birçok doğrusal veya bitsel koşul içeren bir doğrulama rutini. Eğer zorluk "programın B yolunu izlemesini sağlayan girdiyi bul" olarak daha iyi anlaşılıyorsa, sembolik yürütme güçlü bir uyum sağlar. Eğer sorun aslında yığın bakımı, yarış davranışı ya da süreç durumuyla sıkı bir etkileşim ise, sembolik yürütme sadece zaman kaybettirebilir. (Angr Dokümantasyonu)

Çok küçük bir angr örneği şuna benzer:

import angr

proj = angr.Project("./chall", auto_load_libs=False)
durum = proj.factory.entry_state()

simgr = proje.factory.simgr(state)
simgr.explore(find=lambda s: b "Correct" in s.posix.dumps(1))

if simgr.found:
    bulundu = simgr.bulundu[0]
    aday = found.posix.dumps(0)
    print(aday)

Bu senaryo evrensel bir çözücü değildir. Doğru sorunun bir hatırlatıcısıdır. İkilinin başarı koşulu metinsel olarak görünür ve yola dayalı ise, yapay zeka bir angr deneyine daha hızlı ulaşmanıza yardımcı olabilir. İkili gerçekten bellek bozulması veya ince çalışma zamanı durumuyla ilgiliyse, yapay zeka hayal kurmanıza değil, enstrüman kullanmanıza yardımcı olmalıdır.

Ghidra da aynı modele uymaktadır. NSA'nın proje sayfası, onu sökme, ayrıştırma, grafik oluşturma ve komut dosyası oluşturma ile tam bir yazılım tersine mühendislik çerçevesi olarak tanımlıyor. Bu özellikler önemlidir çünkü büyük bir ikiliyi yönetilebilir dilimler halinde kesmenize izin verirler. Model nadiren tüm ikiliyi aynı anda görmelidir. Bir işlevi, bir çağrı zincirini, bir dal kümesini veya bir şüpheli dize komşuluğunu görmelidir. Yapay zeka ile iyi tersine çevirme yereldir. YZ ile kötü tersine çevirme "7.000 satır sözde C yapıştırdım ve şimdi model hatanın muhtemelen ana." (GitHub)

Halka açık kıyaslama çalışması bu ihtiyatı desteklemektedir. 2024 NYU çalışmasında, modeller bazı pwn ve tersine çevirme görevlerini çözebildi, ancak performans kategoriler arasında keskin bir şekilde değişti ve yazarların başarısızlık analizi boş çıktıları, yanlış komut yürütmeyi, bozuk kodu ve eksik zorluk bağlamını içeriyordu. Daha yeni ajan araştırmaları hala güçlü sistemlerin uzun ufuklu planlar, özel araçlar ve deneyim odaklı ipuçlarıyla mücadele ettiğini söylüyor. Başka bir deyişle, mevcut modeller pwn işinin ortasında yardımcı olabilir, ancak istismarı dürüst tutmak için hala bir insana ihtiyaç duyarlar. (arXiv)

CTF'lerin Tersine Çevrilmesinde Yapay Zeka Nasıl Kullanılır?

Tersine çevirme zekadan çok sabrı ödüllendirir ve yapay zeka zekayı simüle etme eğilimindedir. Bu tehlikeli bir durumdur. YZ'yi tersine çevirmede kullanmanın doğru yolu, ondan zorluğu tersine çevirmesini istemek değildir. Ondan yerel karışıklığı azaltmasını istemektir.

Yapay zeka olmadan yapacağınız aynı triyajla başlayın. Çalıştır dizeler. İçe aktarılan kütüphaneleri tanımlayın. Belirgin kodlamaları, hata mesajlarını, dosya yollarını veya biçim işaretlerini arayın. İkiliyi Ghidra'da açın. Giriş noktasını ve kullanıcı kontrolündeki verilere gerçekten dokunan işlevleri bulun. Ardından modelden ne tür bir yardım istediğinize karar verin.

En iyi kullanımlardan bazıları neredeyse editoryaldir. Modelden, nasıl kullanıldıklarına bağlı olarak tek bir derlenmiş işlevdeki değişkenleri yeniden adlandırmasını isteyin. Kontrol akışını sade bir İngilizce ile özetlemesini isteyin. Hangi dalların doğrulama ve anti-analize karşılık geldiğini tahmin etmesini isteyin. Üç ayrık fonksiyonu tek bir doğrusal anlatıma dönüştürmesini isteyin. Bir bytewise döngüsünün daha çok bir sağlama toplamına mı, bir ikame tablosuna mı yoksa aşamalı bir kod çözme rutinine mi benzediğini tespit etmesini isteyin. Bunların hepsi yerel sorulardır. İşe yarıyorlar çünkü model, kalıpları küçük, iyi sınırlanmış bir yapıyla eşleştiriyor.

İyi çalışmayan şey, küresel sentezin çok erken yapılmasıdır. Birbiriyle alakasız beş fonksiyonu yapıştırıp "Neler oluyor?" diye sorduğunuz anda, model anlamsal boşlukları hikayeyle doldurmaya başlar. Tersine çevirirken, hikaye ucuzdur ve insanların düşündüğünden daha sık yanlıştır. Daha iyi bir model, modelin önce birkaç küçük yerel özette başarılı olarak küresel özetini kazanmasını sağlamaktır.

Pratik bir yaklaşım şudur. Kısa bir metin notu ile zorluk için bir klasör oluşturun. Bir işlevi manuel olarak her incelediğinizde, işlevin adını, hangi verilere dokunduğunu ve görevinin ne olduğunu düşündüğünüzü yazın. Ardından modelden her seferinde yalnızca bir birimi işlemesini isteyin. Bu size iki fayda sağlar. Birincisi, modelin üzerine yazmasına izin vermek yerine kendi mantığınızı korursunuz. İkincisi, modelin yorumunu notlarınızla karşılaştırabilir ve aşırı uyum sağlamaya başladığında bunu tespit edebilirsiniz.

Aynı ilke gizleme için de geçerlidir. Bir tersine çevirme zorluğu mantığı kodlanmış dizelerin, paketlenmiş tabloların veya şüpheli derleme eserlerinin arkasına gizliyorsa, model kalıpları çözmeye ve sınıflandırmaya yardımcı olabilir, ancak gerçeğin kaynağı haline gelmemelidir. Bu durum, xz'deki CVE-2024-3094 gibi gerçek dünyadaki bir vakaya baktığınızda daha da belirgin hale gelir. NVD'nin açıklaması, kötü amaçlı kodun yukarı akış tarball'larına eklendiğini ve derleme işlemi sırasında gizlenmiş test dosyalarından önceden oluşturulmuş bir nesneyi çıkardığını ve sonuçta ortaya çıkan kütüphanedeki belirli işlevleri değiştirdiğini açıklamaktadır. Bu, oyuncuları tersine çevirmek için mükemmel bir derstir: ilginç davranış, bariz kaynak yolunun dışında yaşayabilir ve derleme zamanı eserleri, çalışma zamanı mantığı kadar önemli olabilir. (NVD)

Modelin çeviride keşiften daha güçlü olduğunu hatırladığınızda, yapay zeka ile tersine çevirme önemli ölçüde daha iyi hale gelir. Bırakın montajı anlatıma çevirsin, garip tabloları yapılandırılmış verilere dönüştürsün, derleyici eserlerini açıklasın ve şüpheli rutinler için küçük emülatörler hazırlasın. Elinizde bir harita olana kadar tüm ikilinin "ne anlama geldiğine" karar vermesine izin vermeyin.

CTF'lerde Yapay Zeka Nasıl Kullanılır?

Kripto CTF'lerinde Yapay Zeka Nasıl Kullanılır?

Kripto CTF'ler dil modellerinin sınırlarını neredeyse diğer tüm kategorilerden daha hızlı ortaya çıkarır. 2024 NYU sonuçları burada faydalı bir uyarıdır. Seçtikleri veri setinde kripto performansı, tersine çevirme ve bazı pwn görevleri gibi kategorilere kıyasla özellikle zayıftı. Bu, CTF kripto üzerinde zaman geçirmiş olan hiç kimseyi şaşırtmamalıdır. Birçok kripto görevi, belirsiz anlamsal kalıp eşleştirmeye değil, tam yapıya dayanır. Eğer model problem üzerinde doğru cebirsel kavrayışa sahip değilse, dünyadaki tüm Python onu kurtarmayacaktır. (arXiv)

Bu, yapay zekayı kriptoda işe yaramaz hale getirmez. Sadece iş tanımını değiştirir. Model, zorluk hala sınıflandırmaya ihtiyaç duyduğunda en güçlüsüdür. Bu muhtemelen ikame, transpozisyon, blok biçimlendirme, XOR kötüye kullanımı, temel kodlama katmanı veya bir kısıtlama sorunu mu? Önemli ipuçları alfabe boyutu, tekrarlanan bloklar, bayt sıklığı, sabit önek veya anahtarın yeniden kullanımı mı? Çözmeyi denemeden önce neleri ayıklamalısınız? Bunlar iyi yapay zeka sorularıdır çünkü CyberChef'i açıp açmayacağınıza, bir ayrıştırıcı yazıp yazmayacağınıza veya bir SMT çözücüye geçip geçmeyeceğinize karar vermenize yardımcı olurlar.

CyberChef'in kendi sitesi buna "Siber İsviçre Çakısı" diyor ve bu tanım kripto CTF çalışması için doğru. İş akışının henüz bir teoremi kanıtlamadığınız, yalnızca verilerin sıkıştırma, hex, base64, XOR, JSON, URL kodlaması veya bazı kombinasyonlar gibi davranıp davranmadığını test ettiğiniz kısmı için mükemmeldir. Yapay zeka CyberChef ile iyi uyum sağlar çünkü model, verilerdeki görünür yapıya dayalı olarak az sayıda olası dönüşüm zinciri önerebilir ve bunları hemen onaylayabilir veya reddedebilirsiniz. (GCHQ)

Z3 bunun tam tersidir. Microsoft'un kılavuzunda, desteklenen teoriler üzerinde doğrulanabilirliği kontrol eden bir teorem kanıtlayıcı ve SMT çözücü olarak tanımlanmaktadır. Bu, kripto göreviniz tahminle ilgili olmaktan çıkıp kısıtlamalarla ilgili hale geldiğinde önemlidir. Eğer bulmaca gerçekten "Bu aritmetik ve bitvektör koşullarını sağlayan baytları bulun" diyorsa, o zaman model doğaçlama yapmayı bırakmalı ve sistemi resmileştirmenize yardımcı olmalıdır. (Microsoft GitHub)

Küçük bir örnek şuna benzer:

from z3 import BitVec, Çözücü

a = BitVec("a", 8)
b = BitVec("b", 8)
c = BitVec("c", 8)

s = Çözücü()
s.add(a ^ b == 0x12)
s.add(b ^ c == 0x34)
s.add(a + c == 150)

if s.check().r == 1:
    m = s.model()
    print(m[a], m[b], m[c])

Bu parçacığın amacı oyuncak matematiği değil. İş akışındaki değişimdir. Zorluk resmi bir sistem haline geldiğinde, yapay zekanın en iyi işi sistemi doğru bir şekilde kodlamanıza ve çözücü çıktısını açıklamanıza yardımcı olmaktır, cevabı düzyazı olarak tahmin etmek değil.

Yapay zekanın kriptoda iyi çalıştığı bir başka yer de ayrıştırıcı üretimidir. Orta zorluktaki birçok kripto görevi aslında gelişmiş kriptoanalizle ilgili değildir. Dağınık bir formattan doğru baytları çıkarmak, blokları doğru şekilde bölmek, endianlığı yorumlamak veya aptalca hatalar yapmadan metinsel ve ikili görünümler arasında dönüştürme yapmakla ilgilidir. Modeller genellikle bu işleri küçük komut dosyalarına dönüştürmede çok iyidir. Bu gerçek bir değerdir. Sadece bunu kriptografik içgörü ile karıştırmayın.

Modeli dürüst tutmanın güvenilir bir yolu, tanımlama değil eleme istemektir. "Bu hangi şifre?" diye sormak yerine, "Bu şifreli metin uzunluğuna, alfabeye ve tekrarlama modeline dayanarak, hangi yaygın ailelerin olasılığı azalır?" diye sorun. Bu, modeli en tanıdık isme ulaşmak yerine özelliklerden yola çıkarak akıl yürütmeye teşvik eder. Ayrıca, gerçek sorun sadece yeniden kullanılan bir anahtar ve garip bir çerçeve katmanı ile XOR iken model "Vigenere benzeri" bir şey dediği için bir saatinizi boşa harcamanızı önler.

Model, zorluğu zaten çözdükten sonra da yararlıdır. Çözümün neden işe yaradığını açıklamasını isteyin. Sıfırdan yazdığınız senaryoyu daha temiz, belgelenmiş bir versiyona dönüştürmesini isteyin. Hangi ipuçlarının gerçekten önemli olduğunu özetlemesini isteyin. Bu çözüm sonrası görevler, "tek seferde çöz beni" komutunun asla yapamayacağı şekilde gelecekteki kripto zorlukları için örüntü tanımayı güçlendirir.

Adli Tıp ve PCAP CTF'lerinde Yapay Zeka Nasıl Kullanılır?

Adli CTF'ler genellikle eserlerin büyük ve bayrağın küçük olması nedeniyle bunaltıcı hissettirir. Bu tam da yapay zekanın yardımcı olabileceği türden bir asimetridir, tabii her şeyi bir kerede bağlama dökme eğiliminden kaçınmanız şartıyla.

Artefakt türlerini ayırarak başlayın. Paket yakalama bir iş akışıdır. Dosya sistemi kanıtı başka bir şeydir. Bellek analizi başka bir şeydir. Modelin hangisine baktığını çıkarması gerekmemelidir. İlk göreviniz her bir eseri yönetilebilir bir dizine indirgemektir: ilginç protokoller, ilginç dosyalar, ilginç süreçler, ilginç zaman damgaları.

Paket çalışması için TShark idealdir çünkü Wireshark ile aynı görüntüleme filtresi mantığını kodlanabilir bir biçimde sunar. Man sayfası, görüntüleme filtrelerinin güçlü olduğunu ve aşağıdakilerle belirtildiğini vurgulamaktadır -Yile belirtilirken, yakalama filtreleri farklıdır ve -f. CTF'lerde bu ayrım önemlidir çünkü genellikle hiçbir şeyi yeniden ele geçirmek istemezsiniz. Mevcut bir PCAP'yi her seferinde daha dar bir soru sorarak tekrar tekrar dilimlemek istiyorsunuz. (Wireshark)

Yetkili bir meydan okuma PCAP'inde basit bir ilk geçiş triyajı şöyle görünebilir:

tshark -r challenge.pcap \
       -Y 'http.request || dns || tcp.flags.syn==1' \
       -T alanları \
       -e çerçeve.zaman \
       -e ip.src \
       -e ip.dst \
       -e _ws.col.Protocol \
       -e _ws.col.Info

Bu çıktı, bir modelin mantıklı bir şekilde özetlemesi için yeterince küçüktür. Bunu elde ettikten sonra, yapay zeka trafiği aşamaya göre gruplandırmaya, şüpheli hedefleri kümelemeye, patlamaları tanımlamaya yardımcı olabilir veya bir HTTP POST'un ardından bir DNS araması ve ardından önemli olabilecek ikinci bir bağlantı olduğuna işaret edebilir. Yapmaması gereken şey, sadece bir alan adı garip görünüyor diye sızma sonucuna varmaktır. Zaman sırası ve içerik hala önemlidir.

Bellek adli bilimi de benzerdir. Volatility 3'ün dokümanları, çerçevenin analizi bellek katmanları, şablonlar ve nesneler, sembol tabloları ve ilgili yapıları tutan bir bağlam aracılığıyla düzenlediğini açıklamaktadır. Bu, bellek analizinin yapısal olduğunu hatırlatır. Adli bellek incelemelerinde iyi bir yapay zeka kullanımı, modeli ham dökümlerle değil, yapılandırılmış eklenti çıktılarıyla beslemek anlamına gelir. Verin pslist, netscan, komut satırları, yüklenen modüller veya şüpheli tutamaçlar. Bunları ilişkilendirmesini isteyin. Bir zaman çizelgesi oluşturmasını isteyin. Hangi eklentinin iki rakip açıklamayı en iyi şekilde ayırt edebileceğini sorun. (Volatilite 3)

Çok basit bir model şöyle olabilir:

python3 vol.py -f memory.raw windows.pslist
python3 vol.py -f memory.raw windows.cmdline
python3 vol.py -f memory.raw windows.netscan

Bu çıktılara sahip olduğunuzda, yapay zeka gerçekten yardımcı olabilir. Bir sürecin alışılmadık bir ebeveyni olduğunu, bir komut satırının kodlanmış bir PowerShell parçası içerdiğini veya bir dinleme soketinin şüpheli bir alt süreçten kısa bir süre sonra ortaya çıktığını tespit edebilir. Bunlar insanların yorgun olduklarında gözden kaçırdıkları türden ilişkilerdir. Ancak yine de kanıt, özetten değil eserlerden gelir.

Dosya sistemi adli bilimi de aynı kuralı izler. Yapay zekayı kataloglamak, karşılaştırmak ve sıralamak için kullanın. Ondan bir tarball'dan anlam çıkarmasını istemeyin. Bir görüntüden dizeleri kurtarırsanız, modelden bunları kimlik bilgileri, URL'ler, zaman damgaları veya dosya işaretleyicileri olarak kümelemesini isteyin. Birkaç dosyayı oyuyorsanız, modelden başlıkları karşılaştırmasını ve olası türleri çıkarmasını isteyin. Tarayıcı geçmişini veya kabuk geçmişini çıkarırsanız, bir zaman çizelgesi önermesini isteyin. Bunların hepsi "entropiyi azaltma" görevleridir. Yapay zekanın para kazandığı yerlerdir.

Adli tıp CTF'lerindeki yaygın hata, anlatı disiplinini atlamaktır. Bir işlem adı tuhaf görünür, bu yüzden insanlar kötü amaçlı yazılımlara atlar. Bir DNS sorgusu tuhaf görünür, bu yüzden insanlar sızıntıya atlar. Bir JPEG'de fazladan bayt vardır, bu yüzden insanlar stegoya atlar. Yapay zeka, onu kanıt moduna zorlamadığınız sürece bunu daha da kötüleştirir. Her bir iddiayı hangi eserin desteklediğini söylemesini sağlayın. Doğrudan kanıtı çıkarımdan ayırmasını sağlayın. Alternatif açıklamaları listelemesini sağlayın. Bu tek alışkanlık hem insan hem de yapay zeka performansını artırır.

Modelin Size Saldırmasına İzin Vermeden CTF'lerde Yapay Zeka Nasıl Kullanılır?

Yapay zeka destekli CTF oyunundaki en ilginç risk, mücadelenin asistanınıza saldırabilmesidir. OWASP'ın komut istemi ekleme kılavuzu burada alışılmadık derecede önemlidir. Proje, doğrudan ve dolaylı istem enjeksiyonunu birbirinden ayırıyor ve web siteleri veya dosyalar gibi harici kaynakların, model tarafından yorumlandığında model davranışını değiştiren içerik içerebileceğini belirtiyor. Kılavuz ayrıca harici içeriğin ayrıştırılmasını ve açıkça tanımlanmasını, güven sınırlarının test edilmesini ve modelin tarafsız bir yardımcıdan ziyade olası bir saldırı yolu olarak ele alınmasını önermektedir. (OWASP Gen AI Güvenlik Projesi)

CTF iş akışında bu, meydan okuma metni, HTML, README dosyaları, kaynak kod yorumları, PDF'ler, gizli dizeler, ekran görüntüleri, base64 blobları ve hatta görüntü meta verilerinin güvenilmeyen girdi olarak ele alınması gerektiği anlamına gelir. Kötü niyetli veya kasıtlı olarak aldatıcı bir meydan okuma, size değil bir modele yönelik talimatlar içerebilir. İçeriğin insan tarafından anlaşılabilir olması bile gerekmez. OWASP, model bunları ayrıştırdığı sürece istem enjeksiyonlarının insan tarafından görülebilir olması gerekmediğini belirtmektedir. Pratik açıdan bu, son derece sıradan görünen bir belgenin asistanınızın bir sonraki adımını zehirleyebileceği anlamına gelir. (OWASP Gen AI Güvenlik Projesi)

İlk savunma mimaridir. Sistem talimatlarını, kendi görev kurallarınızı ve ham meydan okuma içeriğini tek bir farklılaştırılmamış blobda karıştırmayın. Bölümleri etiketleyin. Güvenilmeyen metinler için açık işaretler kullanın. Modelin görevini dar tutun. "Aşağıdaki güvenilmeyen HTML'yi özetleyin ve yalnızca gözlemlenen rotaları ve formları çıkarın", "Bu sayfayı okuyun ve bana bundan sonra ne yapacağımı söyleyin" den çok daha güvenli bir talimattır.

İkinci savunma operasyoneldir. Model çıktısını asla bir kabukta veya aşağı akış sisteminde otomatik olarak çalıştırmayın. OWASP'ın güvensiz çıktı işleme materyali, model çıktıları kabuklara, tarayıcılara veya diğer bileşenlere doğrulama veya sterilizasyon olmadan aktarıldığında riskin ortaya çıktığını söylüyor. LLM çıktısı güvensiz bir şekilde işlendiğinde XSS, CSRF, SSRF, ayrıcalık yükseltme ve uzaktan kod çalıştırma gibi sonuçları açıkça listeler. Bir CTF'de bu teorik değildir. İş akışınız bir modelin kodu çözülmüş bir ipucunu bir kabuk komutuna dönüştürmesine ve ardından çalıştırmasına izin veriyorsa, meydan okuma verilerine yürütme için bir yol vermiş olursunuz. (OWASP Gen AI Güvenlik Projesi)

Üçüncü savunma sosyaldir, teknik değil. Güvenmeden önce kendinizi yavaşlatın. Eğer model bir yük öneriyorsa, hangi gözleme dayandığını sorun. Eğer bir komut öneriyorsa, komutun altında yatan hipotezi neyin yanlışlayacağını sorun. Tam bir istismar öneriyorsa, hangi tek ön koşulun başarısız olma olasılığının en yüksek olduğunu sorun. Bu sorular yapay zeka olmadan da iyi bir CTF uygulamasıdır. Yapay zeka ile zorunludurlar.

En Çok CTF Puanı Kaybettiren Yapay Zeka Hataları

İlk büyük hata kategori kilitlenmesidir. Model XML'i görür ve sorunun XXE olduğuna karar verir. Daha sonra XXE yüklerini, aslında yalnızca ikinci bir uç noktada bir SSRF modelini veya kimlik bilgisi sızıntısını fark etmenizi isteyen bir stok kontrol özelliğine itmek için otuz dakika harcarsınız. Çözüm, tek bir etiket yerine sıralı hipotezleri zorlamaktır. Modelin ikinci ve üçüncü seçenekler için tartışmasını sağlayın.

İkinci hata ise kanıt açlığıdır. İnsanlar bir modeli tek bir semptomla besler ve bir saat boyunca meydan okumaya bakan bir insan gibi muhakeme etmesini bekler. Bunu yapamaz. İyi bir yardım istiyorsanız, ona temel bir istek, mutasyona uğramış bir istek ve yanıtlar arasındaki kesin farkı verin. Bir fonksiyon için demontajı ve çökme ofsetini verin. PCAP dilimini ve DNS patlama zamanlamasını verin. Her ekstra topraklanmış eser modelin serbestlik derecesini daraltır.

Üçüncü hata ise bağlam şişkinliğidir. Tam bir ikili dosyayı, tam bir PCAP'i, üç ekran görüntüsünü ve tüm sohbet geçmişini tek bir komut istemine dökmek modeli nadiren daha akıllı hale getirir. Genellikle daha özensiz hale getirir. Tek sorun küçük bağlam pencereleri değildir. Büyük pencereler dağınık muhakemeyi teşvik eder. Daha iyi bir hamle, eserleri gerçek araçlarla önceden sınıflandırmak ve ardından modele yalnızca önemli olan dilimi vermektir.

Dördüncü hata ise koda tapmaktır. Yapay zeka tarafından üretilen kod tatmin edici görünür. CTF'lerde bu bağımlılık yaratabilir. Ancak çalışan bir senaryo, herhangi bir şeyi kanıtlayan bir senaryo ile aynı şey değildir. Benchmark çalışmaları defalarca boş çıktılar, bozuk komutlar ve çevresindeki mantık makul görünse bile yanlış kod etrafında başarısızlık modları bulmuştur. Yapay zeka koduna genç bir ekip arkadaşınızın ilk taslağı gibi davranın. Onu inceler, küçültür ve tüm meydan okumada ona güvenmeden önce küçük bir koşula karşı test edersiniz. (arXiv)

Beşinci hata not tutmamaktır çünkü "model hatırlar". Disiplinli bir oyuncunun yaptığı gibi hatırlamaz. Hatırlamayana kadar token bağlamını hatırlar. Notlar titreşimleri yener. İstekleri kaydedin. Senaryo revizyonlarını kaydedin. Karmaları kaydet. Ofsetleri kaydedin. Hangi hipotezlerin neden öldürüldüğünü kaydedin. Bu alışkanlık aynı zamanda CTF sonrası yazılarınızı daha iyi hale getirir, bu da gelecekteki yapay zeka yönlendirmelerinizi daha iyi hale getirir çünkü öğrenebileceğiniz kendi mantığınızın daha temiz örneklerine sahip olursunuz.

CTF'lerde Daha İyi Olmanızı Sağlayan Gerçek CVE'ler

CTF'ler gerçek sistemler için sezgilerinizi keskinleştirdiğinde daha iyidir. Yapay zeka destekli CTF pratiğini daha faydalı hale getirmenin en kolay yolu, meydan okuma modellerini gerçek güvenlik açıklarına bağlamaktır. Her CTF üretimi yansıttığı için değil, en iyi CTF dersleri yapıyla ilgili olduğu için: girdinin bir yorumlayıcıya nasıl ulaştığı, normalleştirmenin nasıl başarısız olduğu, ayrıcalık kenarlarının nasıl ortaya çıktığı, gizli eserlerin güveni nasıl değiştirdiği.

CVE-2021-41773 ve Yol Geçişi Neden Asla Sadece Noktalar ve Eğik Çizgilerden İbaret Değildir?

NVD, CVE-2021-41773'ü Apache HTTP Server 2.4.49'da yol normalleştirme değişikliğinden kaynaklanan bir kusur olarak tanımlamaktadır. Bir saldırgan, URL'leri Alias benzeri yönergeler tarafından yapılandırılan dizinlerin dışındaki dosyalarla eşlemek için yol geçişini kullanabilir. Eğer bu dosyalar normal yollarla korunmuyorsa reddedilen tüm varsayılan olarak, istekler başarılı olabilir. Etkilenen takma yollar için CGI etkinleştirilmişse, sorun uzaktan kod yürütmeye dönüşebilir. NVD ayrıca sorunun vahşi doğada istismar edildiğinin bilindiğini ve CISA'nın daha sonra istismar edilen ilgili Apache HTTP Sunucusu sorunlarının 2.4.49 ve 2.4.50'yi etkilediğini vurguladığını belirtmektedir. (NVD)

Bu CTF oyuncuları için neden yararlıdır? Çünkü yol geçişinin gerçek şeklini öğretir. Hata, "birisi engellemeyi unuttu" değil ../." Hata, normalleştirme, yol eşleme, dağıtım yapılandırması ve sunucunun amaçlanan sınırın dışında neleri açığa çıkarmasına izin verildiği ile ilgilidir. CTF açısından bu, oyuncak bir dosya okuma mücadelesi ile anlamlı bir çapraz geçiş zinciri arasındaki farktır. Yapay zeka çapraz geçiş varyantları oluşturmanıza yardımcı olabilir, ancak ilginç mantık çevreseldir. Hangi dizinlere erişilebilir. Hangi normalleştirme adımının bozuk olduğu. Dosya ifşasının son nokta mı yoksa daha büyük bir şeye giden köprü mü olduğu.

Azaltma dersi de önemlidir. Düzeltme sihirli bir regex değildir. Sürüm düzeltme, doğru yol işleme ve amaçlanan dizinlerin dışındaki dosyaların sunulmasını veya yürütülmesini engelleyen savunma yapılandırmasıdır. Bu, iyi web CTF oyuncularının sonunda içselleştirdiği savunma düşüncesinin aynısıdır: güvenlik açığı yalnızca sözdiziminde değil, güven sınırlarında yaşar. (NVD)

CVE-2021-44228 ve CTF'nin Verileri Bir Yorumlayıcıya Takip Etme Alışkanlığı

CVE-2021-44228, Log4Shell, "kullanıcı kontrollü girdinin bir yorumlayıcıya ulaşmasının" neden temel bir saldırı modeli olduğunun en temiz örneklerinden biri olmaya devam etmektedir. NVD, etkilenen Log4j2 sürümlerinin saldırgan tarafından kontrol edilen günlük mesajlarının veya parametrelerinin saldırgan tarafından kontrol edilen uç noktalara JNDI aramalarını tetiklemesine izin verdiğini ve mesaj arama ikamesi etkinleştirildiğinde uzaktan kod yürütmeyi mümkün kıldığını belirtmektedir. Aynı kayıtta 2.15.0'ın riskli davranışı varsayılan olarak devre dışı bıraktığı ve 2.16.0'ın bu işlevi tamamen kaldırdığı belirtilmektedir. CISA'nın Log4j kılavuzu da aynı şekilde Log4Shell'i kritik bir uzaktan kod çalıştırma sorunu olarak çerçevelemekte ve daha sonraki düzeltmelerde JNDI'nin devre dışı bırakılmasına işaret etmektedir. (NVD)

Bu neden CTF'lerle alakalı? Çünkü yapay zekanın sıklıkla yardıma ihtiyaç duyduğu muhakeme türünü eğitiyor. Buradaki zorluk sadece "nokta enjeksiyonu" değildir. "Kaynaktan lavaboya veri akışını takip etmek ve ardından veriyi kontrole dönüştüren harici çözümleme adımını fark etmektir." Pek çok web ve çeşitli CTF'ler aynı bilişsel hareketin basitleştirilmiş versiyonlarıdır. Bir başlık, parametre ya da kaydedilebilir dize var olduğu için önemli değildir. Önemlidir çünkü bazı aşağı akış bileşenleri onu yorumlar.

Bu yapıya sahip zorluklarda yapay zekayı kullandığınızda, yalnızca yük istemeyin. Yol analizi isteyin. Girdiyi hangi bileşen tüketiyor. Herhangi bir ara dönüşümün mevcut olup olmadığı. Harici çözümleme, şablon oluşturma, veritabanı yorumlama, kabuk yorumlama veya serileştirmenin zincirin bir parçası olup olmadığı. Bu tür bir yönlendirme, modeli "Bana bir Log4Shell dizesi ver "den çok daha kullanışlı hale getirir. Aynı zamanda gerçek hafifletme çalışmalarını da yansıtır: bileşene yama yapın, tehlikeli özellikleri azaltın ve yorumlayıcı davranışını kısıtlayın. (NVD)

CVE-2021-3156 ve Günlük Argüman Ayrıştırmada Saklı Pwn Dersi

NVD, CVE-2021-3156'yı bire bir hata olarak tanımlamaktadır. sudoedit -s sudo 1.9.5p2'den önce yığın tabanlı bir arabellek taşması ve root'a yerel ayrıcalık yükseltmesi üretebilir. Bu, pwn oyuncuları için güzel bir eğitim vakasıdır, çünkü karikatürize bozuk bir oyuncak ikilisinden değil, yaygın olarak kullanılan bir programdaki normal görünümlü argüman işleminden gelir. (NVD)

CTF'den çıkarılacak ders, bellek bozulmasının genellikle egzotik olmaktan ziyade "idari" gibi görünen ayrıştırma mantığında gizlendiğidir. Argüman işleme, kaçış, alıntı, sınır koşulları, uzunluk alanları ve moda özgü davranışlar hatalar için en önemli yerlerdir. Yapay zeka, küçük bir yama farkı, derlenmiş ayrıştırıcı mantığı veya çökme davranışı verdiğinizde ve hangi durum geçişinin taşmayı erişilebilir hale getirdiğini açıklamasını istediğinizde burada yararlı olabilir. Yalnızca CVE açıklamasından nihai bir istismar oluşturmasını isterseniz çok daha az yararlıdır.

Hafifletme dersi de bir o kadar önemlidir. Düzeltilmiş bir sürüme güncellemek operasyonel olarak cevaptır, ancak meydan okuma mantığı için gerçek çıkarım daha derindir: yerel ayrıcalık hataları genellikle güvenilir kod yolları içindeki gözden kaçan geçişlerle ilgilidir. Bu da onları yapay zeka destekli açıklama için ideal, sadece yapay zekanın istismarı için ise korkunç bir malzeme haline getirir. Model, sınır hatasını anlamanıza yardımcı olabilir. İstismar mantığını hassas bir şekilde yürütmek için hala bir insana ihtiyacınız var. (NVD)

CVE-2024-3094 ve Tersine Oynayanlar Neden Boru Hatları Oluşturmayı Önemsemeli?

xz'deki CVE-2024-3094, insanların ilk başta düşündüğünden çok daha fazla CTF kategorisiyle ilgilidir. NVD, 5.6.0 sürümünden başlayarak yukarı akış xz tarball'larında kötü amaçlı kod keşfedildiğini ve derleme işleminin gizlenmiş bir test dosyasından önceden oluşturulmuş bir nesneyi çıkardığını ve sonuçta ortaya çıkan kütüphanedeki belirli işlevleri değiştirdiğini söylüyor. CISA'nın olayla ilgili uyarısında, kötü amaçlı kodun etkilenen SSHD örneklerine yetkisiz erişime izin verebileceği belirtildi. (NVD)

Bu, tersine çevirme ve adli tıp oyuncuları için bir hediyedir. Alışkanlıkla güvendiğiniz şeyin güvenmeniz gereken şey olmayabileceğini öğretir. Kaynak deposu sürüm yapıtıyla eşleşmeyebilir. İlginç dosya test verisi olarak etiketlenmiş olabilir. İstismar yolu, bariz çalışma zamanı mantığı sırasında değil, derleme sırasında ortaya çıkabilir. Yapay zeka bu alanda eser karşılaştırması, derleme komut dosyası özetlemesi ve anomali kümelemesi için gerçekten yararlıdır. Çirkin ayrıntıları yumuşak bir açıklamayla geçiştirmesine izin verirseniz güvenilir değildir.

Hafifletme dersi yine temiz bir şekilde CTF içgüdüsüyle eşleşir. Kanıt önemlidir. Yayın eserleri önemlidir. Tekrarlanabilirlik önemlidir. Bir meydan okuma veya gerçek olay "aynı" programın birden fazla temsilini içeriyorsa, uyumsuzluğun kendisi ipucu olabilir. Kaynak, yapı ve davranışı karşılaştırma alışkanlığı, bir tedarik zinciri vakasının çok ötesinde değerlidir. (NVD)

Yapay Zeka CTF Uygulamasını Daha İyi Pentesting'e Dönüştürmek

CTF'lerde yapay zekanın uzun vadedeki en büyük değeri hız değildir. Disiplindir. CTF'ler saldırgan muhakemeyi kısa bir döngüye sıkıştırır: gözlemle, hipotez kur, test et, doğrula. Eğer yapay zeka sizi bu adımlardan herhangi birinde daha tembel yaparsa, bu size zarar verir. Yapay zeka sizi daha sistematik hale getirirse, sadece yarışmalarda değil, gerçek pentest çalışmalarında da size yardımcı olur.

Bu nedenle CTF'lerdeki en faydalı yapay zeka alışkanlıkları neredeyse sıkıcı bir şekilde işlevseldir. Hatayı kanıtlayan istek çiftini kaydedin. Sonunda işe yarayan komut dosyası revizyonunu kaydedin. Kilitlenme ofsetini ve ikili karmayı kaydedin. Fikrinizi değiştiren eseri tam olarak kaydedin. Bunlar sadece yazma alışkanlıkları değildir. Bunlar, NIST ve OWASP'ın insanları gerçek test programlarına doğru itmeye çalıştığı standart olan tekrarlanabilir güvenlik çalışmalarının başlangıcıdır. (NIST Bilgisayar Güvenliği Kaynak Merkezi)

Penligent gibi bir aracın bu iş akışının içine doğal bir şekilde oturabilmesinin bir nedeni, herkese açık materyalinin yalnızca sohbet etrafında çerçevelenmemiş olmasıdır. Ana sayfada operatör kontrollü ajan iş akışları, hızlı düzenleme, kapsam kontrolleri, geniş araç desteği ve kanıt öncelikli sonuçlar vurgulanırken, dokümanlarda yüklü Kali araçlarının çağrılması ve oluşturulan komut dosyaları için Python ve Bash çalışma zamanlarının yapılandırılması açıklanmaktadır. CTF ortamında, bu sihirli bir şekilde zorlukları çözmez. Yaptığı şey, yapay zeka iş akışınızın gerçek işte önemli olan kısımlarını korumayı kolaylaştırmaktır: açık sınırlar, yeniden çalıştırılabilir komut dosyaları ve bir sohbet penceresi dağıldığında kaybolmayan eserler. (Penligent)

Penligent'in kendi CTF AI yazısı da yararlı bir mimari noktaya değiniyor: niyet, planlama, yürütme ve kanıt işlemeyi ayırın. Tam olarak bu yığını hiç kullanmasanız bile, ayırma sağlam bir tavsiyedir. Zorluk metni, çözücü taslakları, terminal çıktıları, yük deneyleri ve sonuçların birbirine karıştığı uzun bir YZ görüşmesi hızla denetlenemez hale gelir. İş akışını açık aşamalara bölmek hem modeli hem de operatörü daha dürüst tutar. (Penligent)

Temel kural basittir. Yapay zekayı döngüyü daha sıkı hale getirmek için kullanın, bulanıklaştırmak için değil.

En İyi Yapay Zeka CTF Oyuncuları Hala Her Şeyi Doğruluyor

Hatırlamanız gereken bir cümle varsa, o da şudur: Yapay zeka CTF'lerde size daha fazla cevap verdiğinde değil, daha iyi deneyler yapmanıza yardımcı olduğunda en iyisidir.

Mevcut kamusal kanıtlar dengeli bir görüşü desteklemektedir. Ölçütler gerçek bir ilerleme göstermektedir. Modeller yapılandırılmış saldırı görevlerinde yardımcı olabilir ve bazıları belirli ortamlarda ortalama katılımcılardan daha iyi performans gösterebilir. Aynı zamanda performans, düzenlemeye, araçlara, kategoriye ve değerlendirme kurulumuna karşı oldukça hassas olmaya devam etmektedir. Profesyonel düzeydeki kıyaslama çalışmaları, siber değerlendirmelere ilişkin satıcı araştırmaları ve planlamaya dayalı pentest makalelerinin tümü hala uzun menzilli tutarlılık, özel araçlar ve durumsal muhakeme konularında sınırlar olduğunu göstermektedir. (arXiv)

Bu bir hayal kırıklığı değil. Bu bir yol haritası. Web CTF'lerinde, yapay zekanın sınıflandırmasına ve karşılaştırmasına izin verin. Pwn'de, iskele kurmasına ve açıklamasına izin verin. Tersine çevirmede, yerel olarak özetlemesine izin verin. Kriptoda, resmileştirmesine ve ortadan kaldırmasına izin verin. Adli tıpta, kanıtları kümelemesine ve anlatmasına izin verin. Her kategoride, her seferinde bir eserin güvenini kazanmasını sağlayın.

Yapay zekadan en iyi şekilde yararlanan oyuncular sihir isteyenler değildir. Onlar sihrin nerede bittiğini ve ölçümün nerede başladığını tam olarak bilenlerdir.

Daha Fazla Okuma

Güçlü güvenlik açığı sınıfı kapsamına sahip güvenli, yasal web uygulamaları için PortSwigger'ın Web Güvenliği Akademisi en iyi başlangıç noktalarından biri olmaya devam ediyor. (PortSwigger)

Web istismarı, kriptografi, adli tıp, ikili istismar ve tersine çevirme konularında geniş CTF öğrenme materyali için picoCTF'nin öğrenme kılavuzları ve primer'ı çalışırken açık tutmaya değer. (picoCTF)

Pwn çalışması için, resmi pwntools dokümanlarını, özellikle süreç ve uzaktan etkileşim ve corefile iş akışı bölümlerini yakınınızda bulundurun. (Pwntools Belgeleri)

Sembolik yürütme ve ikili yol çözme için angr'nin resmi dokümanları doğru referanstır. (Angr Dokümantasyonu)

Tersine çevirmek için Ghidra'nın resmi proje sayfası yetkili başlangıç noktasıdır. (GitHub)

Paket ve bellek çalışmaları için TShark ve Volatility 3 resmi dokümanları, yapay zeka destekli analizle eşleştirmek için en yararlı referanslardır. (Wireshark)

Yapay zekanın saldırı-güvenlik CTF'lerinde neler yapabileceği ve yapamayacağı konusundaki beklentilerinizi temellendirmek için NYU CTF Bench, Cybench ve ilgili halka açık kıyaslama makaleleri, sosyal medya demolarından daha bilgilendiricidir. (GitHub)

Gerçek testlerde iş akışı disiplini için NIST SP 800-115 ve OWASP Web Güvenliği Test Kılavuzu hala geçerliliğini korumaktadır. (NIST Bilgisayar Güvenliği Kaynak Merkezi)

Bu konuyla gerçekten ilgili olan Penligent'e özgü materyaller için en yararlı sayfalar ana sayfası, belgeler ve yeniden çalıştırabileceğiniz kanıt destekli zincirler hakkındaki CTF AI iş akışı makalesidir. (Penligent)

Gönderiyi paylaş:
İlgili Yazılar
tr_TRTurkish