「Python」はペネトレーションテスト担当者が学ぶのに適したプログラミング言語だと専門家は主張する。Python以外にも目を向けるべきコンピュータ言語や、学習を継続させるために重要なこととは。
実際にシステムに侵入して脆弱(ぜいじゃく)性を確認する「ペネトレーションテスト」(侵入テストとも)。ペネトレーションテストへのプログラミング言語「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製品導入事例などを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.
お知らせ
米国TechTarget Inc.とInforma Techデジタル事業が業務提携したことが発表されました。TechTargetジャパンは従来どおり、アイティメディア(株)が運営を継続します。これからも日本企業のIT選定に役立つ情報を提供してまいります。
新富裕層の攻略法 「インカムリッチ」の財布のひもを緩めるマーケティングとは?
パワーカップルの出現などでこれまでとは異なる富裕層が生まれつつあります。今回の無料e...
ブラックフライデーのオンラインショッピング 日本で売り上げが大幅に増加した製品カテゴリーは?
Criteoは、日本国内のブラックフライデーのオンラインショッピングに関する分析結果を発...
Omnicomが Interpublic Groupを買収 世界最大級の広告会社が誕生へ
OmnicomがInterpublic Group(IPG)を買収する。これにより、世界最大の広告会社が誕生し...