RITSEC CTF 2021 Writeup
Contents
URL: https://ctf.ritsec.club/challenges
2235ポイントで、最終順位は128番でした。
以下は、チャレンジ一覧です。Unlockできてないやつも、もしかしたらあるかもです。
結果的に、Forensicsばっかりになってしまいました。
以下、Writeupです。Webと101は省略します。
[Rev]: snek (100 points)
Challenge
No step on snek
Attachments:
- snek
Solution
まずは、ファイル・タイプの確認をします。
$ file snek snek: python 3.7 byte-compiled
ググったところ、どうやらDecompyle++ というのを使うとよさそう。
以下はインストールの仕方です。
$ git clone https://github.com/zrax/pycdc.git $ cd pycdc $ cmake . $ make
|
|
上の方は数字が連番ですが、ハイライトした辺りは数字が不規則なのでそこに当たりを付けました。
数字を文字に変換すると、{all_hi$$_and_n0_bit3} になります。
Flag: RS{all_hi$$_and_n0_bit3}
[Forensics]: 1597 (100 points)
Challenge
… as in https://xkcd.com/1597/
http://git.ritsec.club:7000/1597.git/
Solution
git cloneしてfull historyを見るだけです。
$ git clone http://git.ritsec.club:7000/1597.git/ $ cd 1597 $ git log -p --all --full-history commit dcc402050827e92dbcf2578e24f2cba76f34229c (HEAD -> master, origin/master, origin/HEAD) Author: knif3Date: Fri Apr 9 05:49:00 2021 +0000 Updated the flag diff --git a/flag.txt b/flag.txt index a24cab4..8b13789 100644 --- a/flag.txt +++ b/flag.txt @@ -1 +1 @@ -Your princess is in another castle + commit b123f674a07eaf5914eda8845d86b5219fc1de11 (origin/!flag) Author: knif3 Date: Fri Apr 9 05:49:00 2021 +0000 More flags diff --git a/README.md b/README.md index 0ff84f3..99ddfa8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # 1597 -A git challenge series? Sounds fun. +What's worse, basing a CTF challenge off of XKCD, or basing a challenge off of git? diff --git a/flag.txt b/flag.txt index 8b13789..013a6dd 100644 --- a/flag.txt +++ b/flag.txt @@ -1 +1 @@ - +RS{git_is_just_a_tre3_with_lots_of_branches}
Flag: RS{git_is_just_a_tre3_with_lots_of_branches}
[Forensics]: FYSA (100 points)
Challenge
(記載なし)
Attachments:
- BIRDTHIEF_FYSA.pdf
Solution
Libre OfficeでPDFファイルを開いて4ページ目にある。黒塗りをマウスで移動。
Flag: RS{Make_sure_t0_read_the_briefing}
[Forensics]: Parcel (200 points)
Challenge
That’s a lot of magick
Attachments:
- Parcel
Solution
まずは、ファイル・タイプの確認をします。
$ file Parcel Parcel: gzip compressed data, from Unix, original size modulo 2^32 759456
解凍すると、メールのtcp streamが入ったテキストが出てきます。メールの添付ファイルはbase64 decodeをしたら取り出せます。
添付ファイルは沢山あって、数個やってみたところ、分割されたフラグの画像のようです。
スクリプトを書いた方が早いかな、と思って以下を書いて添付ファイルを全部取り出しました。
|
|
コードの中のflagは、base64の部分を特定するためにスイッチとして使っているものです。
出てきた画像の中でフラグを含んでいるものを、Libre Officeで読み込んでパズルのようにくっつけました。
Flag RS{Im_doing_a_v1rtual_puzzl3}
[Forensics]: Blob (200 points)
Challenge
Ha. Blob. Did you get the reference?
http://git.ritsec.club:7000/blob.git/
Solution
packed-refsファイルの中身は以下のようになっていました。
# pack-refs with: peeled fully-peeled sorted a69cb6306e8b75b6762d6aa1b0279244cacf3f3b refs/remotes/origin/master d0644363aa853a17c9672cefff587580a43cf45e refs/tags/flag
“git packed-refs CTF"でググったら、どうやら OTW/bandit にあるチャレンジと同じタイプのようです。
$ git show flag RS{refs_can_b3_secret_too}
Flag: RS{refs_can_b3_secret_too}
[Forensics]: PleaseClickAlltheThings 1: BegineersRITSEC.html (150 points)
Challenge
Note: this challenge is the start of a series of challenges. The purpose of this CTF challenge is to bring real world phishing attachments to the challengers and attempt to find flags (previously executables or malicious domains) within the macros. This is often a process used in IR teams and becomes an extremely valuable skill. In this challenge we’ve brought to the table a malicious html file, GandCrab/Ursnif sample, and a IceID/Bokbot sample. We’ve rewritten the code to not contain malicious execution however system changes may still occur when executing, also some of the functionalities have been snipped and will likely not expose itself via dynamic analysis.
- Outlook helps, with proper licensing to access necessary features. Otherwise oledump or similar would also help but isn’t necessary
- CyberChef is the ideal tool to use for decoding
Part 1: Start with the HTML file and let’s move our way up, open and or inspect the HTML file provide in the message file. There is only one flag in this document.
This challenge is brought to you by SRA
Attachments:
- Please Click all the Things.msg
Solution
Macを使って調べていて、*.msgファイルを開くツールがなかったので、「foremostで添付ファイルを取り出せばいいや」と思ったのが原因で、結構ハマリました。
なぜなら、foremostではhtmlファイルが出てこないからです。
マクロを調査してフラグっぽいのも取れているのに、Invalid Flagの連発だったので、ちゃんとmsgファイルを開くことにしました。
$ sudo gem install ruby-msg $ mapitool -i *.msg
これで、msgファイルは、emlファイルに変換されます。
emlファイルはMacのMailアプリで開けるんですが、なんかしらアカウントの設定をしないとMailアプリが使えないというのはイケてない所ですね。。
emlファイルを開くと、ちゃんとhtmlファイルが添付されていました。
URLエンコードされた文字列が見つかるのでデコードしてやって、更にBase64デコードするだけです。
Flag: RITSEC{H3r3!t!$}
[Forensics]: PleaseClickAlltheThings 2: GandCrab_Ursnif (200 points)
Challenge
NOTE: this challenge builds upon BegineersRITSEC.html, and that challenge must be completed first.
GandCrab/Ursnif are dangerous types of campaigns and malware, macros are usually the entry point, see what you can find, there are two flags in this document. Flag1/2
Solution
これは、単にマクロの中で見つかるRITSEC{M@CROS}という文字列でした。
Flag: RITSEC{M@CROS}
[Forensics]: Please Click All the Things 3: IceID (350 points)
Challenge
NOTE: this challenge builds upon BegineersRITSEC.html, and that challenge must be completed first.
Stepping it up to IceID/Bokbot, this challenge is like the previous challenge but requires some ability to read and understand coding in addition to some additional decoding skills, there are two flags in this document. (Flag 1/2)
Solution
難読化されたVBAマクロを解析するチャレンジです。
以下がオリジナル。
|
|
以下は、がんばって書き換えをして、見やすくしたもの。
|
|
ポイントとなるのは上記の str2 と func2 で、結果的に単なるROTでした。
Flag: RITSEC{R0TT1NGM@LC0D3}
[Forensics]: Inception CTF: Dream 1 (100 points)
Challenge
The purpose of this CTF challenge is to identify common methods of hiding malicious files and code. In most cases adversaries will attempt to evade defenses in many cases by masquerading, hiding files, and more. There are five directories like the five levels in the movie Inception, Reality -> Van Chase -> The Hotel -> Snow Fortress -> Limbo. You will find one flag in each of the levels, that flag will also be the password to extract the next directory. Requirements: • You must have 7zip installed • Drop the InceptionCTF.7z on the Desktop as “InceptionCTF” • Use the option “Extract to “
\” for the CTF to function properly Missing either of the above may result in complications which may cause issues when attempting to find flags.
NOTE: These challenges have a flag format of RITSEC{}
Dream 1: We have to get to their subconscious first, look for a hidden text file within the directory “Reality” this flag will unlock the next directory.
We would like to thank our sponsor @SRA for contributing this challenge!
Attachments:
- InceptionCTFRITSEC.7z
Solution
このDreamシリーズは、解いたフラグが次の7zを解凍するためのパスワードになっているので、順番に解いていく必要があります。
解凍していくと、Reality.7zを解凍した時点で、Subconscious.txtというのが出てきます。
中身:
Wait a minute, whose subconscious are we going into, exactly? {dnalmaerD}CESTIR
$ echo {dnalmaerD}CESTIR | rev RITSEC}Dreamland{
Flag: RITSEC{Dreamland}
[Forensics]: Inception CTF: Dream 2 (225 points)
Challenge
Note: This challenge builds off Inception CTF: Dream 1,
Unfortunately, the subconscious isn’t enough for this mission, we have to kidnap Fischer we need to go further into the system of the mind. Use the flag found to edit the PowerShell script, entering the Flag in line three in-between the single quotes. Run the PowerShell script and wait for it to complete its actions.
Thanks to SRA for providing this challenge!
Solution
解凍していくと、Kidnap.txtというのが出てきます。
中身:
52 49 54 53 45 43 7b 57 61 74 65 72 55 6e 64 65 72 54 68 65 42 72 69 64 67 65 7d
$ python -c 'print("".join([chr(int(x,16)) for x in "52 49 54 53 45 43 7b 57 61 74 65 72 55 6e 64 65 72 54 68 65 42 72 69 64 67 65 7d".split()]))' RITSEC{WaterUnderTheBridge}
Flag: RITSEC{WaterUnderTheBridge}
[Forensics]: Inception CTF: Dream 3 (200 points)
Challenge
Note: This challenge builds off Inception CTF: Dream 1,
Note: This challenge builds on Inception CTF: Dream 2.
While the first two steps were easy it’s all hard from here on out, ThePointMan is the most crucial role of the mission he has to be presentable but without giving away our intentions. Use Alternate Dream State to find the flag before the kick.
Solution
解凍していくと、ThePointMan.txtというのが出てきます。
これは、XOR bruteや、quipquip、モールス信号、ヴィジュネル暗号などを使って解けるんですが、フラグとは関係ないdecoyだった模様。
別に、名無しのファイルが一個あって、その中身が以下です。
You mean, a dream within a dream? NTIgNDkgNTQgNTMgNDUgNDMgN2IgNDYgNDAgMjEgMjEgNjkgNmUgNjcgNDUgNmMgNjUgNzYgNDAgNzQgNmYgNzIgN2Q=
base64デコードをして、数字を文字に変えるだけです。
Flag: RITSEC{F@!!ingElev@tor}
[Stego]: Inception CTF: Dream 4 (200 points)
Challenge
Note: This challenge builds off of InceptionCTF: Dream 3
Don’t lose yourself within the dreams, it’s critical to have your totem. Take a close look at the facts of the file presented to you. Please note the flag is marked with an “RITSEC=” rather than {} due to encoding limitations.
Solution
Dream 4からStegoカテゴリになっています。
stringsをやると、URLエンコードされている部分が見つかるのでデコードするとモールス信号が出てきます。
モールス信号は以下でデコードしました。
https://morsecode.world/international/translator.html
結果:
DREAMSFEELREALWHENWE'REINTHEM.IT'SONLYWHENWEWAKEUPTHATWEREALIZESOMETHINGWASACTUALLYSTRANGE.RITSEC=DIVERSION
Flag: RITSEC{DIVERSION}
Author CaptureAmerica @ CTF フラxxグゲット
LastMod 2021-04-13