2000 OK

basketball player and hacker will keep be childish.

winsows updateが原因で起動不能になったdual bootパソコンを復旧させる方法

環境

  • Let’s note LX5
  • windows10 x64
  • Debian8 x64

手順

  1. grub rescueが表示されて困る。
    PCを起動すると、いつもはGRUBが表示されるところが下記のように表示されます。

      grub rescue>
    
  2. 状態確認 lsコマンドでパーティションがどのような状態になっているか確認。

      grub rescue> ls
      (hd0) (hd1) (hd1,gpt8) (hd1,gpt7) (hd1,gpt6) (hd1,gpt5) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1)
    
  3. Linuxの入っているパーティションを探す。 (hd1,gpt6)にLinuxファイルシステムがあることが分かります。

      grub rescue> ls (hd1,gpt7)
      (hd1,gpt7): Filesystem is unknown
    
      grub rescue> ls (hd1,gpt6)
      (hd1,gpt6): Filesystem is ext2
    
  4. 本当にLinuxファイルシステムか確認 grub rescue> ls (hd1,gpt6)/boot/grub/

  5. GRUBのノーマルモジュールをロードし、GRUBメニューを表示させる。

     grub rescue> set prefix=(hd1,gpt6)/boot/grub
     grub rescue> root=(hd1,gpt6)
     grub rescue> insmod normal
     grub rescue> normal
    

    するといつものGRUBの画面が表示されるのでDebianで立ち上げます。

  6. GRUBの修正 ターミナルを開き、下記コマンドを叩きます。

      sudo grub-install /dev/sda/
    

以上で終了です。再起動するといつものGRUBの画面が表示されます。
こちらを参考にさせてもらいました、ありがとうございます。

SECCON CTF 2016 Binary 100

Challenge

Anti-Debugging
Reverse it.
bin (SHA1: 690c72681b1cd2bb9fe01efe0bfb71b44f7838d3)
may some AV will alert,but no problem.

私の環境ではAVに引っかからなかったです。気を利かせてくれたのか、役立たずなのか、、、

与えられたのは32bitのPEファイルです。まずは、実行してみます。
パスワードなんて知らないですけど、パスワードを入手しなくてはならないようです。

\> .\bin  
Input password >abcde  
password is wrong.

IDA demoを使います。
“Input password >"をprintfした後、strcmpをしているところがあるので、ここら辺が怪しいなぁと思い、ここにbreakpointを指定して実行します。ここのstrcmpではEAXとECXの値を比べているので、それぞれのアドレスの先を見ます。passwordには先ほどと同じ"abcde"を渡しました。
f:id:grapeBiscuit:20170708132837p:plain

EAXとECXの値は次の通りです。
f:id:grapeBiscuit:20170708133020p:plain

それぞれのstackには次のように値が入っていました。
f:id:grapeBiscuit:20170708133256p:plain

ECXのアドレス(0019FED8)には、"0x61 0x62, 0x63, 0x64, 0x65"が並んでおり、これは先ほどpasswordとして渡した “abcde"をasciiコードにしたものです。EAXのアドレス(0019FEC4)には、"0x49, 0x29, …, 0x6E,0x2E"が並んでおり、同様にasciiコード表と見比べると"I have a pen."がpasswordだと分かリます。
passwordで"I have a pen."と入力し、再度プログラムを実行します。IsDebbugerPresent関数を使って弾かれてしまいます。
f:id:grapeBiscuit:20170708172553p:plain

その先のコードを見ると、その他wiresharkvmwareでも弾かれるようです。諸々のプロセスを見た後、怪しい部分を見つけたのでここまでジャンプします。ジャンプしたい先で、(右クリック) -> (Set IP), (Jump to IP)でジャンプできました。
f:id:grapeBiscuit:20170708172852p:plain

ジャンプ後、そのまま実行すると、ポップアップでflagが出てきます。

Answer

SECCON{check_Ascii85}

Sweets

  • 今回はジャンプしても目的は達成されたのだが、ジャンプして飛ばした部分に重要な処理があった場合は、どうなるのだろうか。
  • Anti debugに関してまだリバースエンジニアリングバイブルで勉強中なので、早く読み進めなくては。

Trend Micro CTF 2017 Reversing 100 writeup

Challenge

問題文をメモし忘れてしまいました、、、
暗号化と圧縮したファイルを解凍するとpocketという名前のzipファイルが現れます。binwalkでジャカジャカ展開していきます。

# binwalk pocket  
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 39281, uncompressed size: 39271, name: biscuit  
39371         0x99CB          End of Zip archive

すると、biscuit1とbiscuit2というファイルが展開されます。

# binwalk biscuit1  
 DECIMAL       HEXADECIMAL     DESCRIPTION
 --------------------------------------------------------------------------------
 0             0x0             Microsoft executable, portable (PE)

# binwalk biscuit2 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, encrypted at least v2.0 to extract, compressed size: 69, uncompressed size: 64, name: biscuit4
107           0x6B            Zip archive data, encrypted at least v2.0 to extract, compressed size: 12778, uncompressed size: 30935, name: biscuit5
12923         0x327B          Zip archive data, encrypted at least v2.0 to extract, compressed size: 13747, uncompressed size: 14378, name: biscuit3
26870         0x68F6          End of Zip archive

biscuit2は暗号化されたzipファイルのようです。その暗号鍵がbiscuit1から得られるのでしょう。biscuit1は32bitのPEファイルなので、まずwindowsから起動してみます。

.\biscuit1.exe  
Please find sweets name starting from m for biscuit2.

はい、予想通り暗号鍵があると教えてくれました。mから始まるスイーツの名前だそうです。PEviewで見ると、"GetCommandLineA"が見つかり、何かコマンドライン引数を引っ張ってるのかなぁと予想しながら(最近、リバースエンジニアリングバイブルで勉強したので)デバッガーに食わせます。 ollydbgを使って処理を追っていくと、"macaron"という文字列が見当たります。これが暗号鍵でした。
biscuit2を解凍すると、buscuit3, buscuit4, buscuit5が展開されます。 biscuit4はテキストファイルで次のように書かれています。

# cat biscuit4 
Please create flag.

hint:

Flag = TMCTF{biscuit3_ biscuit5}

どうやら、buscuit3とbuscuit5から答えを持ってこればFlagが得られそうです。それぞれのファイルは次のようです。biscuit3は展開します。

# binwalk biscuit3 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
382           0x17E           Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
14253         0x37AD          Zip archive data, at least v1.0 to extract, compressed size: 5, uncompressed size: 5, name: biscuit.txt
14356         0x3814          End of Zip archive  

# binwalk biscuit5 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)

biscuit3を展開するとbiscuit.txtが出てきて、中にはcreamと書かれています。”cream”がbiscuit3の答えです。

biscuit5の方はbuiscuit2と同様に"GetCommandLineA"に注目しながら、ollydbgで解析していくと途中で"choux"という文字列が現れます。これがbiscuit5の答えです。

Answer

ようやくFlagがgetできました。TMCTF{cream_ choux}
と思いきや、ヒントが間違っていたようです。
TMCTF{choux_cream}

Trend Micro CTF 2017 SCADA 300 writeup

Challenge

Within the ICS enviroment there has been some odd behavior with one of the network switches. You have asked your Network Administrators to see if they could pull some traffic from their packet capture solution. They dug into the issue and couldn’t make sense of whats going on but think that there may be an attacker that has figured out a backdoor into the system based off an SSH connection.
Figure out how the attacker was able to exploit the system, and utilize the backdoor to SSH into the system.
To submit the flag, you’ll have to wrap the backdoor into TMCTF{}
Download the file (https://s3-ap-northeast-1.amazonaws.com/trendmicro-ctf-2017/2VjxmQSdV3uBQvReFLea/files19.enc) Decrypt the downloaded file by the following command.
> openssl enc -d -aes-256-cbc -k lnlzeirDTOWxKBdpBTsz -in files19.enc -out files19.zip
> unzip files19.zip

さすがTrend Micro。実際にあったサイバー攻撃事例を想定してCTFを作っているのでしょう。

files19.zipを解凍するとinteresting_artifacts.pcapという名前のpcapファイルが1つ与えられます。パケットをざっと眺めると、前半にHTTP、後半にSSHのやり取りがされていることが分かります。後半部分のSSHは問題文にあるbackdoorに関連するのだろうということで、HTTPに注目して進めます。
すると、exproit.tar.gzというかなり怪しいファイルをPOSTしているリクエストが見つかるので、wiresharkのExport Objects機能でSaveします。おそらくファームウェアのアップロードでしょうか。残念ながら、tar.gzフォーマットでは出力してくれませんので、exploit.tar.gzの部分だけ取り出します。hexdumbで出力してくれたファイルを見ます。 f:id:grapeBiscuit:20170626141019p:plain

gzipファイルのマジックナンバー1F 8Bなので、0x98byte目からがexploit.tar.gzの始まりだと分かります。binwalkを使っても分かります。binwalkとtarコマンドで展開していきましょう。f:id:grapeBiscuit:20170626141858p:plain

展開すると、etc,usr,varディレクトリが出てきます。etcの下にはpasswdファイルも含まれており、そのリストの中にはパスワードハッシュ付きでTMCTFユーザがリストされています。このハッシュをJohn the Ripperで解析しましょう。パスワードリストにはrockyou.txtを使いました(ヒントをもらっていた)。 f:id:grapeBiscuit:20170626170924p:plain

パスワードが割れたので、早速フラグを送って見ます。TMCTF{odagirih}
…違うようです。調べると、Unixのパスワードは8文字までのようです。もしかしたら辞書ファイルにはもっと長い文字列が書き込まれていたのかもしれません。 f:id:grapeBiscuit:20170626171238p:plain

やはりそうでした。

Answer

TMCTF{odagirihayato}

しかし、オダギリハヤトって誰なんでしょうか…