22
Ağu
2020

HackZeugma Writeup

Hackzeugma Cumhurbaşkanlığı Dijital Dönüşüm Ofisinin yanlış bilmiyorsam 2 yıldır düzenlediği CTF’in devamı. İki senedir hackistanbul olarak yapılıyordu. Bu sene sanayi temalı olduğu için Gaziantep’de ve scadaya yönelik olacaktı.

Lakin coronadan dolayı her şey planlandığı gibi gitmedi. Normalde 3 aşamlı olan bu CTF’de düzenlemeler yapıldı. Bunun sonucunda

  1. Aşama: Online bir test yapıldı. Grup adminleri sadece sisteme girebildi. Sistemdeki süre sayacı çalışmıyordu. Birden bire sınavım bitince üzüldüm. Ancak buna rağmen 2nci tura çıkabilmiştik. Sorular çok güzeldi.
  2. Aşama: Jeopardy stili bir CTF karşımızdaydı. Geçmiş yıllardan alınan dersler ışığında bu sene Türkiye’de bu işi en iyi yapan STM’den destek alınmış. Hiç bir masraftan kaçınılmayarak Takımlara özel makineler hazırlanmış. Birazdan bu aşama ile ilgili hatırladığım soruları açıklayacağım. Zira 3’üncü aşamaya geçemedik 🙂
  3. Aşama: Finale kalan 10 takım yarışacak. Scada ağırlıklı olması bekleniyor ama ne olur bilinmez. Daha önce de drone hacklenecek diyip normal makine alma olayı vardı.

HackZeugma 2nci Tur

Nerdeyse herşey mükemmeldi. Soruların bir kısmında hikaye yoktu. Bu bence eksik bir husus. Ama önemli değil. Yarışmanın son 9 saatine gelindiğinde discordda konuşmayı engellediler. Bu da zevkimi kaçıran bir husus oldu. Ayrıca çok zor sorular vardı. Zor derken ne olduğu belli olmayan hiç bir takımın çözemediği veya en fazla 1-2 takımın çözdüğü. Yalvarmamıza rağmen hint verilmedi. Verildiğinde de “hiç bir işe yaramayan” hintler verildi. Dolayısıyla ben CTF’in bitimine 6 saat kale bıraktım. Zaten yeni soru da gelmedi. Bence bu nokta eksikti. Zor sorular tamam olsun. Orta seviye soruyu arttır ki fark belli olsun. Bu soruları hızlı çözenler sonuçta daha iyi ekipler olacak.

SmartHomeDevice

Soruyu tam hatırlamıyorum. Ancak kabaca işte bir cihazın ısı ölçeriyle ilgili bir soruydu. Arşiv dosyasını açtığımızda karşımıza bir pcap bir de python dosyası çıkmaktaydı. Python kodunu incelediğimizde “Measured temperature” ile “Transport Key” e ihtiyacımız olduğunu görebiliyorduk.

#!/usr/bin/env python

import base64
import pbkdf2

from Crypto.Cipher import AES
from Crypto import Random
from Crypto.Protocol.KDF import PBKDF2
 
BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * chr(BLOCK_SIZE - len(s) % BLOCK_SIZE)
unpad = lambda s: s[:-ord(s[len(s) - 1:])]

CIPHERTEXT = b'AAAAAAAAAAAAAAAAAAAAAGB0WVtSit/nYBC8EfqDLaPnX0uK+i1gTSeKp0Oy9QOII/SfnSSboO3OZ0ShYfNMng=='

def generate_key(password, salt):
    return pbkdf2.PBKDF2(password, salt).read(32)
    #kdf = PBKDF2(password, salt, 64, 1000)
    #key = kdf[:32]
    #return key
 
 
def encrypt(raw, password, salt):
    key = generate_key(password, salt)
    raw = pad(raw)
    iv = b'\x00' * 16
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return base64.b64encode(iv + cipher.encrypt(raw))
 
 
def decrypt(enc, password, salt):
    key = generate_key(password, salt)
    enc = base64.b64decode(enc)
    iv = enc[:16]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(enc[16:]))
 
 
if __name__ == '__main__':
    salt     = str(input("Input the salt (Hint: What is the measured temperature)....:"))
    password = str(input("Input the key (Hint: What is the Transport Key)............:"))

    plaintext = decrypt(CIPHERTEXT, password, salt)
    print("Flag......: {0}".format(bytes.decode(plaintext)))

Zigbee trafiği vardı. Pcap dosyasında. Burada problemim transport keyi bulabilmek için önce önce wireshark ayarlarından zigbee protkolünden anahtarı girmemiz gerekiyor. Yoksa trafiği açık göremediğimiz için key’i göremiyoruz. Bu noktada gereksiz çok uğraştım. Çünkü internette araştırdığımda herkes bu keyi direk kopyala yapıştır yapıp geçiyordu. Sonra bir blackhat sunumunda ve bir youtube videosunda girilen key’in aynı olduğunu görünce jeton düştü 🙂 Sonuç olarak bu key’i girdiğimde kabak gibi her şey meydana çıktı. Aslında buradan sonrası çocuk oyuncağı. Transport keyi alıp, derece bilgisinin geldiği kısmı bulup dereceyi alıp sonra python scriptini çalıştırmak. Yalnız derece sürekli tazeleniyordu. Ben hepsini denemek zorunda kaldım. Sonuncu çalıştı bu da biraz vakit kaybettirdi.

Default trust key diye de kocaman yazmışlar sunuda ama iki yerde birde görmeden anlamamıştım 🙂
Measured Value kabak gibi ortada bir şey anlatmaya gerek yok bile yok 🙂
İlgili değerleri girdiğimizde flag karşımızda 🙂

POTTER Write Up Reverse APK

Evet arkadaşlar bu soruda elimizde bir APK dosyası var. İlk olarak jadx-gui ile APK dosyasını açıyorum.

Özetle şunu anlıyorum buradaki sleepler benim flagi görmemi engelleyecek.

İlk başta sistemi anlayıp kendim flagı bulacak kodu yazabilir miym diye baktım. Ancak (OOP hocam beni dövecek terimleri hatırlamıyorum) bu kalıtım olan classlar, extend olan methodlar global değişkenler local değişkenler falan biraz karıştırdı kafamı. Sonra dedim ki benim bu kodu değiştirip APK’yı derleyebilmem lazım. Bunu daha önce hiç denememiştim. Yapılabildiğini ancak tekrar imzalanması gerektiğini biliyordum.

Önce genymotionda uygulamayı çalıştırıp bir görmek istedim. Tam düşündüğüm gibi 3üncü harften sonra süre uzadıkça uzuyor. Bu sleeplerden kurtulmam lazımdı artık.

Biraz aramam sonucunda APK Easy Tool ile bir araç buldum. Harbi Easy miş 🙂 APK ‘yı bu tool ile açtım. Smalli dosyalarında zaten JADX-gui da kodu incelediğim için kolayca sleep functionlarını sildim. Sonra aynı tool aracılığıyla tekrar derleyip APK’yı imzalattım. Genymotiona tekrar attığımda uygulamadığı flag hemen çıktı 🙂

HOPE Coding

İtiraf ediyorum bu challangei çözmek için kod yazmadım 🙂 Soruda bir video var.

Kayan kısmın QR kod olduğu aşikar. Şimdi bu QR kodu nasıl alacağız?

Daha önce video ile bağıntılı bir kaç coding sorusuyla ilgili CTF’lerde karşılaşmıştım. Basit yöntemlerden biri videoyu framelere ayırıp fotoğrafların içerisinden veri çekmek olabiliyor. Ancak burada o kadar veri sıkıntı yaratabilir. En temizi kayma hızına göre en üst satırı alıp bunu yeni dosyaya yazarak sıfırdan QR kodu oluşturmak. Sonra düşündüm. Bunları googleda araştıracam. Çünkü şu an ezberimde bu işlemleri nasıl yapacağım yok. Dedim ki kaydıkça ben bunu kendim kaydedip birleştireyim.

Photoshop terk bir insan olarak powerpointte hızlıca bunları birleştirdim. Zaten hizalama için falanda yardımcı olduğu için çok problem olmadı. Sonra telefonumdaki kamera ile açtığımda sonuç karşıda.

RSOISS MISC Writeup

Sorunun adını tam hatırlamıyorum. Bir ses dosyası verilmişti. Bu sorunun çözümü bana çok keyif verdi. Çünkü tam bir takım olmuştuk. Ses var kategori misc tamam dedim stego var karşımızda. Abi uğraşıyorum altından giriyorum üstünden çıkıyorum. Hiç bir şey yok. Kafayı yiyorum. Ama CTF’lerde yapılması gereken temel bir konuyu kaçırıyorum. Soru adı!

Takım arkadaşım Murat bunun uzaydan aktarılan ses dalgalarıyla ilgili olduğunu söylüyor. Hadi lan ordan diyorum ne alaka 🙂

Soru isminden anlaşıldığını söylüyor. Bunun üzerine araştırmayı değiştiriyorum. Evet Murat HAKLI 🙂 Burdan sonrasında rezil olma pahasına anlatıyorum:)

sudo apt install qsstv yaparak qsstv toolu ile bunu açabileceğimi öğreniyorum. Abi benim kali bunu bulamıyor. Yeni repo ekliyorum olmuyor. Hatalar hatalar hatalar. Saat olmuş 23:45 hemen Melih Abiye yazıyorum. Linux kullanıyor zaten o defaultta. Abi şunu indir diyorum. İndiriyor ve sonuca yaklaşıyoruz.

Yaklaştım ama tam okunmuyor diyor.

Tabi takım arkadaşına pas atıp geriye çekilmek olmak. Senin koşmaya devam etmen lazım. Araştırmalara devam ediyorum. Bunun mobil uygulamasını yapmışlar. İndiriyorum. Ama inputu sesi dinleterek veriyorsunuz. Benim de ev ana cadde de aşağıda pastanede bağıranlar, arkada benim havlayan köpek falan bir süre sonra sonuca geliyoruz.

Telefonu laptopun hoparlörüne dayadığımda sonunda bu çıktıyı alabildim. Okunabilir bir sonuçtu. DDO{CQ_CQ_CQ_DE_DDO_K}

OSINT-1 Writeup

Ben şimdi soruyu ve ismini hatırlamıyorum. Ama bir sayfa vardı burada kaynağı görüntüleyince iki tane önemli bilgi çıkıyordu. Birisi e-posta adresi diğeri ise bir key. Key’in ikinci soru için olduğu bariz. Bu soruda da biraz araştırdıktan sonra arkadaş fark etti ki bu hesaba mail attığımızda bize dönüş olarak flag geliyormuş 🙂

OSINT-2 Writeup

Soruyu çözemedik 🙂 Hint olarak decoder kullanın yazmışlar. Hiç düşünememiştik valla 🙂 Çünkü soruda şöyle bişi var ROT-13’ü biliyor ve stalk yapabiliyorsan tamamdır tarzı bir şey diyordu. Tinder’ından ebay’ine her şeye baktım ama sonuç yok. Zaten 1 takım çözmüş onlar da nasıl çözdü merak ediyorum.

Sonuç

Diğer sorulardan aklımda kalan yok. Forensic sorularından birinde uzak masaüstü cache dosyalarından çıkan kalıntıları puzzle gibi birleştirip flagı almıştık. O dosyaları da arkadaş bulmuştu. Onun dışında başka çözdük mü yapabildik mi bilmiyorum. Ha bir de web sorusunda sanırım Shellshock varmış. Soru web sorusu olduğundan hiç aklımıza gelmedi. Directory traversalı bulduk ama flagi okuyamadık maalesef. CTF sonrası arkadaşın aklına geldi. Sağdan soldan duyduğuma göre shellshock varmış.

Bence genel olarak güzel bir CTF idi. Takım arkadaşlarım tatilde ve şehir dışında olması sebebiyle çok fokuslanamadık. Sorularda zorlar çok zordu. Malwarelere bakasım gelmedi. Finale kalan arkadaşlara başarılar.

Share

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir