server/admin/sync/README.md

7.0 KiB

Format des répertoires pour la synchronisation

  • Un dossier par groupe/scénario, contenant :
    • AUTHORS.txt avec vos noms, tels qu'ils apparraîtront sur le site
    • introduction.txt une présentation rapide du scenario (~2-3 phrases d'accroche pour lecture rapide), compréhensible par un décideur, petit schéma a l'appui
    • Un dossier par challenge : CHID-Titre du challenge
      • scenario.txt contenant le scénario du challenge, tel qu'il sera affiché sur le site, à destination des participants
      • introduction.txt une présentation rapide du challenge (~1-2 phrases d'accroche), compréhensible par un décideur, petit schéma a l'appui si besoin
      • defines.txt définitions de quelques paramètres (format toml) :
        • gain = 42 : nombre de points que rapporte cet exercice ;
        • [[hint]] : paramètres pour un indice :
          • filename = "toto.txt" : nom du fichier tel qu'il apparaît dans le dossier hints ;
          • cost = 10 : coût de l'indice (par défaut 1/4 des gains du challenge) ;
          • title = "Foo Bar" : titre de l'astuce dans l'interface (par défaut "Astuce $id") ;
      • depends.txt contenant les dépendances :
        • une dépendance par ligne
        • format d'une ligne : CHID
      • flags.txt contenant les flags :
        • un flag par ligne
        • format d'une ligne : Description<TAB>Flag le premier caractère tabulation est utilisé comme séparateur entre la description et le flag. Prennez garde à ce que votre éditeur de texte ne remplace pas cette tabulation par des espaces !
        • la description est facultative (sera remplacé par « Flag »), mais la tabulation ne l'est pas.
      • flags-ucq.txt pour un questionnaire type cases à cocher :
        • une question par ligne
        • format d'une ligne : <RESPONSE>Intitulé le premier caractère 0 ou 1 indique si la bonne réponse est de cocher la case ou non. L'intitulé commence sans séparateur.
      • flags-mcq.txt pour un questionnaire à choix multiple :
        • une question par ligne avec ses réponses, séparé par des tabulations
        • format d'une ligne : Question<TAB>Réponse 1<TAB>Réponse 2<...>
      • links.txt : webographie publiée avec les solutions
        • un lien par ligne
        • format d'une ligne : https://lien Description le premier ' ' est utilisé comme séparateur entre le lien et sa description
        • liens vers les CVE concernées, metasploit/exploitDB, article qui vous a aidé, extrait/dépôt de code, ...
      • hints/ : dossier contenant des indices pour orienter le participant (qu'il débloquera en échange d'un certain nombre de points)
        • l'ordre alphabétique détermine l'ordre dans lequel seront proposé les astuces (préfixez par des numéros si besoin d'ordre)
        • les fichiers textes de moins de 25 lignes sont affichés directement, les autres (autres types ou textes plus longs) sont proposés au téléchargement.
      • resolution/ : dossier contenant les vidéos de résolution
        • format MP4 (H.264 + AAC + 3GPP Timed Text)
        • utiliser les sous-titres pour commenter les étapes ; pas de commentaires audio
        • environ 2' par vidéo : maxi 1'30" pour les challenges simples, 3-4' maxi
        • ffmpeg -video_size 1920x1080 -framerate 25 -f x11grab -i :0.0 -f alsa -ac 2 -i hw:0 -strict experimental resolution.mp4
        • recordMyDesktop sous Linux
        • Screencast Capture Lite pour Windows (pas de logiciel de « démonstration » => il faut payer la licence pour publier une vidéo)
        • Aegisub, Gnome Subtitle, emacs/vim, ... pour les sous-titres
      • files/ : fichiers à distribuer aux participants
        • DIGESTS.txt : contenant les condensats des fichiers : $(b2sum * > DIGESTS.txt) à générer avant l'upload !
        • Pas plus 4GB à télécharger par challenge (ie. tous les fichiers de ce challenge)
        • Archives .tader.bz2, .tar.gz, .tar.xz ou .zip lorsque nécessaire. PAS de .rar, ...
        • Compresser (sans tarball, j+wwwwwwwwwwwwwwwwwwuste via gzip) les fichiers lorsque c'est utile (memory dump, ...)
        • Utiliser $(split -b 240M -d BIG_FILE BIG_FILE.) pour uploader les gros fichiers sur owncloud. Ces fichiers seront concaténés au moment de leur import sur l'interface. Seul le hash du fichier entier est requis dans le fichier DIGESTS.txt.
      • ressources/ :
        • ressources et scripts que vous avez réalisés pour le challenge : pour sa construction ou sa résolution
        • schéma du SI au premier challenge concerné
        • éventuellement un README.txt avec les liens des outils externes

Exemple d'arborescence

Active Directory/
    ...
Virtualisation légère/
    ...
PDF/
    AUTHORS.txt
    introduction.txt
    1-Cible cachée/
        ...
    2-Black&White/
        ...
    3-Ligne rouge/
        files/
            DIGESTS.txt
            clue.pdf
            big_clue.pdf.00
            big_clue.pdf.01
            big_clue.pdf.02
        resolution/
            resolution.mp4
        ressources/
            generator.pl
            PDFextractor.exe
            solver.py
            pdf_index_schema.svg
        flags.txt
        scenario.txt
        links.txt
...

Exemple AUTHORS.txt

Courtois J. <mailto:courto_j@epita.fr>
Bombal S.
Mercier P-O. <https://nemunai.re/>

Vous pouvez indiquer entre chevrons, un lien qui sera associé à votre nom.

Vous pouvez utiliser un pseudo si vous n'êtes pas fier de vos réalisations.

Exemple flags.txt

Date d'exfiltration (yyyy-mm)	2015-12
IPv6 d'exfiltration	fe80::319c:1002:7c60:68fa
	CocoRik0

Sans description comme sur cette dernière ligne, l'intitulé affiché du flag sera "Flag :".

Exemple links.txt

https://media.ccc.de/... Vidéo d'inspiration
https://metasplo.it/ Exploit utilisé
https://nist.gov/ CVE-2016-4242

Exemple DIGESTS.txt

3222734c6c8782682a9c36135a3518e8f4d1facabf76e702cf50da0037a4ed0a425e51266c2914fb83828573e397f96c2a95d419bd85919055479d028f51dba5  fic2016.jpg
023939b0c52b0dfce66954318ab82f7a8c10af4c79c8d5781612b58c74f3ace056067d7b15967e612b176a186b46d3d900c4db8881ba47202521eec33e5bb87b  fic.org
7c91450239cf9b0717642c55c3429dd7326db26e87d4ca198758053333f0640ee89d2dd9b2f1919598f89644b06aa8fc2085648e3d1e542a6db324c9b16a0bdf  header.tex