ハッキングの初心者のために、いくつか問題を設置してみました。以前は8946など、練習ができるサーバーが準備されていましたが、何者かによって、データベースの情報が書き換えられるという残念なことが起こってしまいました。当サイトはそういった問題を設置するスペースが今のところ確保されていないので、練習ができるサーバーについては記事の後半でしょうかいさせていただきます。そして、今回は腕試しがてら、知識の問題を設置してみました。前半は問題、後半は解答になっております。
ハッキングの問題を腕試しで解いてみよう【知識編】
問題1:同一オリジンポリシーとはどのようなものですか?
問題2:当サイトではハッキングがなるべくバレない手法を公開しました。それはどのような方法ですか?
問題3:シェルを起動するためのシェルコードをC言語で書いてください。
問題4:スタンドアロンの端末がウイルスに感染しました。考えられる理由を答えなさい。
問題5:Cookieの代わりに使われる手法を答えなさい。
問題6:CDNによって守られたWebページがあります。オリジンサーバーを特定する手法を1つ挙げてください。
問題7:OpenCVの個人特定技術をバイパスする方法を1つ挙げてください。
ハッキングの問題とそれぞれの回答
解答1:1つのオリジンから読み込まれた文やスクリプトに対して、そのリソースから別のオリジンのリソースへのアクセスを制限するものです。ブラウザのセキュリティにおいては重要な部分を担っております。プログラマも意識せずWebサイトをコーディングしていてブラウザのエラーで悩むことがあります。ハッキングについて意識できていないプログラマも世の中に多く存在します。
初心者向けハッキング問題解説(そもそもオリジンとは?)→プロトコル(http://)、ドメイン(なんとかかんとかドットコム)、ポート番号(8080)をあわせたものです。URLとは違います。
解答2:答えは難読化です。絶対にバレないわけではありません。難読化はそもそもはソースコードなどを読みづらくするものです。そして、一定のアルゴリズムで難読化をするため、すでにその手法が分かっているハッカーにはすぐに解析をされてしまいます。
解答3:
#include
int main()
{
char filename[] = "/bin/sh\x00";
char *argv[1];
char *envp[1];
argv[0] = "/bin/sh";
argv[1] = 0;
envp[0] = 0;
execve(filename, argv, envp);
}
解答4:とある施設で起こったハッキングの事件というか、問題です。記憶媒体の持ち込みや制限を行っていなかったので、施設内に落ちていたUSBメモリを端末に接続して、スタンドアロンで運用していたにもかかわらず、ハッキングされてしまう事件が起こってしまいました。
初心者向けハッキング問題解説(スタンドアロンってなんやねん)→コンピューターなどの端末がネットワークもしくはほかの端末に接続しない状態のことを指します。基本情報技術者試験でもたまに出てくる問題です。
解答5:フィンガープリンティングと呼ばれております。ヨーロッパなどでCookieなどに対する法律ができたおかげで、この技術に注目が集まりました。日本も実はその法律の例外ではありません。違反すると、そこそこの罰金がやってきますが、これに違反している企業は未だ多いです。これによって、例えば画面の大きさなどを取得したりして、スマホかパソコンかなんて特定できたりもします。
初心者向けハッキング問題解説(それはどのような法規制?)→GDPR(一般データ保護規則)です。
解答6:これは例としてですが、お問い合わせフォームに自動返信機能がある場合にはそれを使うことができます。表から参照されるものについては守られますが、内部から発信する情報については制限を行っていないことが多いです。よって、返信されたメールのヘッダなどを解析するとオリジンを特定することが可能です。回りくどいことをしなくとも、申請によってしっかりとオリジンを開示してくれるCDNも多いですので、悪いことには使えません。(漫○村よ、話聞いてるか?)
解答7:顔の途中に髪をつけてみたり、顔の途中で明暗をつけたりなどのメイクをして、OpenCVをバイパスする方法が以前着目されました。中国ではすでに個人情報が過剰なまでに管理されているので、この手の方法に注目がますます集まっております。
初心者向けハッキング問題解説(OpenCVとは)→スマホなどにも使われている顔認証技術です。監視カメラなども実はこれで・・・と悪用できてしまう事もあります。
ハッキングの問題や腕試しができるサーバー
8946などが閉鎖してしまったため、現在できるハッキングの問題を解いたり腕試しができるサーバーはこちらです。ただし、この手の問題は初心者を相手にしているサーバーではないため、1問目から何をしていいのかがわからない方が多いです。管理者のために、直接のリンクではなく文字列として貼り付けておきます。
http://ksnctf.sweetduet.info
ハッキングの一連の問題や腕試しが解けなかった方へ
おそらくほとんどのアクセスをしてきた方が、問題のすべてが解けなかったのではないかと思います。反対にすべて、答えることができたのであれば、すでに当サイトの情報には着目していないかもしれません。独学だったり、そんな練習などは別の方法でやるからです。ここまで書いてきた知識などを初心者が簡単につけるのであれば、やはり一連の何かしらのプログラミングの知識をつけた上で、さらにセキュリティの教科書などを読まれることをおすすめします。プログラミングの知識をつけた上という部分が重要です。ほとんどのハッキングの本などについて、本格的なものを目指しているのであればすでにこの知識は当たり前のものとして、どんどん話が進んで行きます。まずは、どの言語を選べば良いかわからない方は、どのような言語を選べば良いのか当サイトの別の記事を参考にしてみてください。