Crypto CTF Workflow

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Λίστα ελέγχου διαλογής

  1. Προσδιορίστε τι έχετε: encoding vs encryption vs hash vs signature vs MAC.
  2. Προσδιορίστε τι έχετε υπό έλεγχο: plaintext/ciphertext, IV/nonce, key, oracle (padding/error/timing), partial leakage.
  3. Κατηγοριοποιήστε: symmetric (AES/CTR/GCM), public-key (RSA/ECC), hash/MAC (SHA/MD5/HMAC), classical (Vigenere/XOR).
  4. Εφαρμόστε πρώτα τους ελέγχους με τη μεγαλύτερη πιθανότητα: decode layers, known-plaintext XOR, nonce reuse, mode misuse, oracle behavior.
  5. Αναβαθμίστε σε προχωρημένες μεθόδους μόνο όταν χρειάζεται: lattices (LLL/Coppersmith), SMT/Z3, side-channels.

Διαδικτυακοί πόροι & εργαλεία

Αυτά είναι χρήσιμα όταν η εργασία αφορά ταυτοποίηση και αφαίρεση επιπέδων, ή όταν χρειάζεστε γρήγορη επιβεβαίωση μιας υπόθεσης.

Hash lookups

Identification helpers

  • CyberChef (μαγικό, αποκωδικοποίηση, μετατροπή): https://gchq.github.io/CyberChef/
  • dCode (ciphers/encodings playground): https://www.dcode.fr/tools-list
  • Boxentriq (substitution solvers): https://www.boxentriq.com/code-breaking

Practice platforms / references

  • CryptoHack (hands-on crypto challenges): https://cryptohack.org/
  • Cryptopals (classic modern crypto pitfalls): https://cryptopals.com/

Automated decoding

  • Ciphey: https://github.com/Ciphey/Ciphey
  • python-codext (tries many bases/encodings): https://github.com/dhondta/python-codext

Encodings & classical ciphers

Technique

Many CTF crypto tasks are layered transforms: base encoding + simple substitution + compression. Ο στόχος είναι να εντοπίσετε τα layers και να τα αφαιρέσετε με ασφάλεια.

Encodings: try many bases

If you suspect layered encoding (base64 → base32 → …), try:

  • CyberChef “Magic”
  • codext (python-codext): codext <string>

Common tells:

  • Base64: A-Za-z0-9+/= (το padding = είναι συνηθισμένο)
  • Base32: A-Z2-7= (συχνά πολλά = padding)
  • Ascii85/Base85: πυκνή στίξη; μερικές φορές τυλιγμένο σε <~ ~>

Substitution / monoalphabetic

  • Boxentriq cryptogram solver: https://www.boxentriq.com/code-breaking/cryptogram
  • quipqiup: https://quipqiup.com/

Caesar / ROT / Atbash

  • Nayuki auto breaker: https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript
  • Atbash: http://rumkin.com/tools/cipher/atbash.php

Vigenère

Bacon cipher

Συχνά εμφανίζεται ως ομάδες 5 bits ή 5 γραμμάτων:

00111 01101 01010 00000 ...
AABBB ABBAB ABABA AAAAA ...

Morse

.... --- .-.. -.-. .- .-. .- -.-. --- .-.. .-

Ρούνες

Οι Ρούνες είναι συχνά αλφάβητα αντικατάστασης· ψάξε για “futhark cipher” και δοκίμασε πίνακες αντιστοίχισης.

Συμπίεση σε challenges

Τεχνική

Η συμπίεση εμφανίζεται συνεχώς ως επιπλέον στρώση (zlib/deflate/gzip/xz/zstd), μερικές φορές εμφωλευμένη. Αν το output σχεδόν αναλύεται αλλά μοιάζει με σκουπίδι, υποψιάσου συμπίεση.

Γρήγορος εντοπισμός

  • file <blob>
  • Αναζήτησε magic bytes:
  • gzip: 1f 8b
  • zlib: often 78 01/9c/da
  • zip: 50 4b 03 04
  • bzip2: 42 5a 68 (BZh)
  • xz: fd 37 7a 58 5a 00
  • zstd: 28 b5 2f fd

Raw DEFLATE

Το CyberChef έχει Raw Deflate/Raw Inflate, που συχνά είναι ο πιο γρήγορος δρόμος όταν το blob φαίνεται συμπιεσμένο αλλά το zlib αποτυγχάνει.

Χρήσιμα CLI

python3 - <<'PY'
import sys, zlib
data = sys.stdin.buffer.read()
for wbits in [zlib.MAX_WBITS, -zlib.MAX_WBITS]:
try:
print(zlib.decompress(data, wbits=wbits)[:200])
except Exception:
pass
PY

Συνηθισμένες κατασκευές κρυπτογραφίας σε CTF

Τεχνική

Αυτά εμφανίζονται συχνά επειδή πρόκειται για ρεαλιστικά λάθη προγραμματιστών ή κοινές βιβλιοθήκες που χρησιμοποιούνται λανθασμένα. Ο στόχος συνήθως είναι η αναγνώριση και η εφαρμογή μιας γνωστής ροής εργασίας εξαγωγής ή ανακατασκευής.

Fernet

Τυπική υπόδειξη: δύο Base64 strings (token + key).

  • Αποκωδικοποιητής/σημειώσεις: https://asecuritysite.com/encryption/ferdecode
  • Σε Python: from cryptography.fernet import Fernet

Shamir Secret Sharing

Αν δείτε πολλαπλά shares και αναφέρεται ένα threshold t, πιθανότατα είναι Shamir.

  • Online reconstructor (χρήσιμο για CTFs): http://christian.gen.co/secrets/

OpenSSL salted formats

Τα CTFs μερικές φορές δίνουν εξόδους openssl enc (το header συχνά αρχίζει με Salted__).

Βοηθήματα για bruteforce:

Γενικό σετ εργαλείων

  • RsaCtfTool: https://github.com/Ganapati/RsaCtfTool
  • featherduster: https://github.com/nccgroup/featherduster
  • cryptovenom: https://github.com/lockedbyte/cryptovenom

Συνιστώμενη τοπική ρύθμιση

Πρακτική στοίβα για CTF:

  • Python + pycryptodome για συμμετρικά primitives και γρήγορο prototyping
  • SageMath για modular arithmetic, CRT, lattices και εργασίες RSA/ECC
  • Z3 για challenges βασισμένα σε περιορισμούς (όταν η κρυπτογραφία μπορεί να εκφραστεί ως περιορισμοί)

Προτεινόμενα πακέτα Python:

pip install pycryptodome gmpy2 sympy pwntools z3-solver

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks