OWASP DAY 2016 Spring MINI Hardening writeup(?)

同期から教えてもらって Hardening に参加できたらいいなー,
と思ってポチったら無事当選でき参加してきた.

チーム

4人1チームだったのだけれど,1人は最初からメールの返信もなく,当日も現れなかった….
偶然なのか何なのか同じ会社の人もチームメンバーでとても驚いた.

シナリオ

与えられたシナリオは簡単にはざっと以下のような感じ(足りないとこもありそう).

  • LAMP 環境の Web サイトが与えられる
  • Web サイトは Wordpress で構築されている
  • FTP を使ってサイトのファイルを更新している
  • IT 担当のアカウントが3つ転がっている
  • 競技者は unyou アカウント or 自分で作ったアカウントを利用する

採点は, ftp や http などが上がってるかどうかで(全部で4つあった),
前のスクリーンに映しだされていたが,小さくてよく見えなかった.
とりあえず自分のチームの位置をチームメンバーの人に教えてもらったので,
赤いものを青くするように頑張る感じ.

競技内容

何も考えず始まった瞬間に yum update をかけるも,
ミラーサーバにつながらない.そういう話ではないのか,と理解した.

それならとりあえず怪しいプロセスはいないかと思って, ps aux してみたけど,
そんな変なプロセスが変なユーザで常時動いてる,という感じではなさそうだった.

cron で怪しいものとか動かしてないかなー,とか思って sudo crontab -l してみると,
なんか 5分ごとに動いている healthcheck があった.
中身をみてみると難読化された python のコードでどうみても怪しいので,
とりあえず該当の cron をコメントアウトして動かないようにした.

次に, /var/log 以下を適当に漁ってみたけど,色々ありすぎてとっかかりが見つからない.
ただ, /var/log/secure を眺めてると過去に大量ログインに失敗しているログがあって,
攻撃を受けていた,ということがわかった.

侵入されている可能性もありそうで,とりあえずユーザ一覧を眺めようと思って,
/etc/passwd を見てみると, vnyou とかいうどうみても怪しいやつがいた.
id vnyou してみると root 権限をもっているしこいつはダメだということになり,
チームメンバーに通報して vnyou ユーザを抹殺.

とっかかりが見えたので, /var/log 以下を vnyougrep してみると,

  • IT 担当のアカウントのうち ken が割られて vnyou を追加している
  • ftpchroot_list(だったっけ?)に vnyou を追記している
  • www 以下に .test みたいなディレクトリを掘って怪しいファイルを設置している(2箇所)
  • (既に止めていた) healthcheck ファイルを配置している

と,侵入されてからやられていることはこんな感じだった.
とりあえず, chroot_list から vnyou を削除.
www 以下に置かれた怪しいファイルを見てみると難読化されていてさっぱり読めなかったが,
どうみても怪しいので,2ファイルとも削除.
cron で叩いてる healthcheck は最初に止めたので,
これで ken が割られて怪しいことをされたところは一通りなんとかできた.

スコアボードを見てみるとどうやらまだ ftp が赤く,
チームメンバーと色々相談したり,運用ルールを見ながら変なところを探して,
設定を色々変えてみたけど青くならず.

みんなで, ftp と戦っているうちに運営からみんな攻撃にさらされてますよ!!!
的なアナウンスがあって,マジで!? と思ってスコアボードをみてみると,
他のチームは全部赤くなったりしていたけど,うちは特に変わらず ftp だけ赤い.
さっき消したバックドア周りから攻撃されたっぽいようでうちは大丈夫だった.

その後,チームメンバーとずっと ftp と戦ってたけどさっぱりわからんかった.

最後の数分で突然運営から,みんなよく出来ていて面白くないので突発的に攻撃します!!!
と言われて,攻撃を受けると httpd が刺さって死亡.
刺さってる httpd はどうしようもないので,とりあえず restart かけてあげた.
そんなこんなで,競技終了.

最後の攻撃は,アクセスログから推測するに, slow request 的な攻撃を受けたっぽかった.
httpd はノーチューニングなのでどうしようもなかった.

反省点

  • あまりチームの連携がうまくとれてなかった
  • 最後まで port forward をやらなかったので運用しているページを見たことがなかった
  • ftp はまりすぎ

色々ありそうだけど,パっと思いついたのはこんな感じ.

感想

思った以上に時間は早く過ぎていって,もっと色々やりたかったな,というところがあった.
とはいえ,こういう競技に参加するのは初めてだったので非常に新鮮でかつ楽しめた.
攻撃に晒されるというのは,大変だった.

今回はとっかかりを掴めば,
結構対策できたのでそういったところはうまく立ち回れたのかな?(だったらいいな)

ただし ftp 周りはさっぱりわからんかったのでよろしくない….反省.

普段の業務では守る側,というほどではない(社内からしかアクセスできないツールしか作ってない)ので,
CTF とは違った楽しみがありつつも,守る側が一番大変ということを実感できた.

本家の8時間のほうも参加できるならしてみたいな,と思いました.

おまけ(追記)

チームメンバーの方が書かれた writeup では,
この writeup の足りない部分(システム構成や動作させている Web サイトなど)が書かれています.

kanpapa.com