実際にシステムに侵入して脆弱(ぜいじゃく)性を確認する「ペネトレーションテスト」(侵入テストとも)。ペネトレーションテストへのプログラミング言語「Python」活用を解説した書籍『Black Hat Python, 2nd Edition: Python Programming for Hackers and Pentesters』の著者であるジャスティン・サイツ氏とティム・アーノルド氏は、Pythonの有用性を主張する。両氏からのアドバイスをインタビュー形式で紹介しよう。
―― Python以外に初心者が学習すべきコンピュータ言語はありますか。
アーノルド氏 「JavaScript」はWebアプリケーションのテストでよく遭遇するスクリプト言語(簡易型プログラミング言語)なので、JavaScriptの知識があると重宝する。JavaScriptを学習するか、少なくともJavaScriptを読めるようになれば、問題点が分かるようになるはずだ。汎用(はんよう)的なプログラムの開発にはPython、Webアプリケーション開発にはJavaScriptを使用するとよい。
「Go」もお薦めだ。Goプログラムのソースコードをコンパイルすると、どのシステムでも実行可能なファイルを生成する。一方Pythonは、プログラムを実行するための実行環境をシステムにインストールしなければならない。
サイツ氏 ペネトレーションツール「Metasploit」のソースコードを抜粋してカスタマイズしようとしたときは、プログラミング言語「Ruby」の知識がなかったため少なからぬ苦戦を強いられた。Goを開発言語として採用するツールも増えてきた。とはいえペネトレーションテストと情報収集に関して、Pythonほど汎用性の高いプログラミング言語はない。
―― ペネトレーションテストまたはPythonの学習を継続するためのアドバイスをお願いします。
サイツ氏 練習を重ねること、セキュリティの競技大会「CTF」(Capture The Flag)に参加すること、リバースエンジニアリングやオンラインのセキュリティトレーニング教材「Hack The Box」に取り組むことだ。これらはどれもスキルを磨くのに役立つ。
―― お薦めのペネトレーションテスト用ツールはありますか。
サイツ氏 ペネトレーションテストで最も重要なのは、ツールではなくネットワークとOSに関する知識だ。「Windows」「Linux」といったOSでタスクが機能する仕組み、ネットワークにおけるデータの移動やフィルタリングの仕組みに関する基礎知識があれば、どのテストツールであっても使い方を理解できるだろう。
テストツールの学習から始める人は少なくない。だが、そうした人は実際に問題が発生するまで、問題が発生する理由を学びにくい。問題に遭遇した時点で、ようやく重要な知識を学ぶことになる。面白みのない難解な知識の習得から始めることは、つまらなくてもやはり重要だ。
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
メディア化する企業が勝つ時代の動画マーケティングはどうあるべきか
見込み客の興味についての理解を深化させ、イベントの価値を最大化し、人々の注目を獲得...
B2B企業のSEO記事コンテンツ制作、「外注に失敗」の経験が8割超――EXIDEA調査
SEOのノウハウはもちろん重要ですが、記事制作を外注するに当たっては、自社や業界のこと...
さようならiPod Appleへの20年の貢献度を振り返る
ポータブルミュージック40年の歴史とともに、その偉業を振り返ってみましょう。