IaaS

カジュアル攻撃ツールtrapeを使って攻撃できるハズだった

trapeとは

trapeはインターネット上の人物の追跡・攻撃を行うツールであり、公開されている情報源の調査・分析を行ってスパイ活動を行う、オープン・ソース・インテリジェンス(OSINT)と呼ばれる捜査を可能にするとのこと。
 
なんかすごい感じです。インターネットを通して追跡・攻撃ができるそう!ということは、私がこれを手に入れたのでハッカーになりました(こなみ
皆さんもカジュアルハッカーになりましょう。

目標

AWSのEC2インスタンスをSSH接続してtrapeを使って、バレないように社長のパソコンとスマホを攻撃する。某映画みたいになることを想定しています。スマホを落としていないのに。
 

手順

 AWSでEC2インスタンスを利用した
今回利用したのはAmazonLinuxで、2じゃないやつです。
 
・Amazon マシンイメージ (AMI)
Linux AMI 2018.03.0 (HVM), SSD Volume Type

・セキュリティグループ
 
色々試したところ、80、443はWebサービスとして解放して、8080なりを起動ポートとして指定しないと正しく動作しませんでした。
 
HTTP:TCP:80:0.0.0.0/0
HTTPS:TCP:443:0.0.0.0/0
SSH:TCP:22:絞りましょう
trape:TCP:8080:0.0.0.0/0
 trapeのインストール
AmazonLinuxにはGitがインストールされていないので、先にGitを準備します。

・Gitのインストール

sudo yum install git -y
 
・trapeのダウンロード
git clone https://github.com/jofpin/trape.git
cd trape
 
・ requirements.txtの中に、必要なモジュールが揃っているのでまとめてインストール、しかし更にモジュールが足りないと言われる
python -m pip install --user -r requirements.txt

flask 1.0.2 has requirement Jinja2>=2.10, but you'll have jinja2 2.7.2 which is incompatible. python-socketio 2.1.1 has requirement six>=1.9.0, but you'll have six 1.8.0 which is incompatible. python-engineio 3.0.0 has requirement six>=1.9.0, but you'll have six 1.8.0 which is incompatible. eventlet 0.24.1 has requirement six>=1.10.0, but you'll have six 1.8.0 which is incompatible.

・Jinja2とsixそれぞれのアップグレードが必要なので実行
python -m pip install --user jinja2 --upgrade

cloud-init 0.7.6 requires argparse, which is not installed. cloud-init 0.7.6 requires cheetah, which is not installed. cloud-init 0.7.6 requires oauth, which is not installed. cloud-init 0.7.6 requires PrettyTable, which is not installed. cloud-init 0.7.6 requires pyserial, which is not installed.
 
・まだ足りないと申すので、更にインストールを続行。
python -m pip install --user argparse cheetah oauth PrettyTable pyserial

・続いてsix
python -m pip install --user six --upgrade
trapeの初期設定
trapeを起動すると、初期設定が始まります。
 
python trape.py -h
trapeが利用する外部サービス2つのAPIキーを登録する必要があります。正しく登録しないと起動しません。
 
・NGROKのAPIキー(必要なのはAPIキーだけです)
https://dashboard.ngrok.com/

・GOOGLE MAPS API(こちらも同様です)
https://cloud.google.com/maps-platform/
 
Google Shorter API Keyも聞かれますが、サービス終了している&持っていないので、入力しませんでした。
trapeの起動
・EC2のパブリックDNSもしくはEIPや取得したDNS名などを指定し、8080ポートで起動します
python trape.py --url http://ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com --port 8080

起動できればターミナルがこんな画面になります

 
これが表示されれば起動完了(Control Panel linkとYour Access keyは後ほど使用します)
管理画面にログインしてみる
ブラウザからControl Panel linkのURLにアクセスすると、下記画面が表示されます。アクセスキーは先ほどターミナルで表示されたものを利用します。起動する度にURLとアクセスキーが変わります。
 
ログイン後はメニューが表示されますが、なんかよくわかりませんがいい感じに動きません。
 
ターミナルを見てみると、エラー出まくりで荒ぶっています。
[2018-12-10 06:21:11,442] ERROR in app: Exception on /ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com [GET]
Traceback (most recent call last):
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ec2-user/.local/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/ec2-user/trape/core/user.py", line 69, in homeVictim
    html = assignScripts(victim_inject_code(opener.open(trape.url_to_clone).read(), 'payload', trape.url_to_clone, trape.gmaps))
  File "/home/ec2-user/trape/core/dependence/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/home/ec2-user/trape/core/dependence/urllib2.py", line 418, in _open
    '_open', req)
  File "/home/ec2-user/trape/core/dependence/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/home/ec2-user/trape/core/dependence/urllib2.py", line 1207, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/home/ec2-user/trape/core/dependence/urllib2.py", line 1177, in do_open
    raise URLError(err)
URLError: <urlopen error [Errno 111] Connection refused>
trapeのControl Panel linkアドレスは開けますが、その先のアドレスをクリックしても500エラーが返ってきますので、この状態だとツールは使えません。
 
最後までたどり着けませんでした。
 
誰か私をハッカーにしてください。
参照元はこちら
 

中川 沙也香

最近エンジニアへ方向転換を図ろうとしている25歳です。東南アジアが大好きで、フィリピンに留学・就職もしていました。ストリートフードや辛いもの全般(メキシカン、韓国料理、タイ料理など)だいすきなので世界中を旅しておいしいものを食べまくりたい。休日は海外ドラマ(The Big Bang Theory、 Modern family等)を見まくっていて一話から最終話まで一気に見れるとすごく気持ちよく眠れます。