サイバー攻撃とその対策

- ## ご挨拶
皆さんお久しぶりです。私はこの頃私立の高校入試を終えたところです。いやぁ受かってるといいですね。
てことで、今回は近年増加しているサイバー攻撃についてを取り上げたいと思います。
最近、ニュースなどでサイバー攻撃があったということを耳にしませんか？
それは、ランサムウェアであったり、DDoS攻撃であったり、ソーシャルエンジニアリングであったり。
今は何でもデジタル化している時代なのでサイバー攻撃があると多大な損失をかぶることになります。
そこで、私たちがどのような対策をすればいいのかについて今回は考えていきます。

それでは本編どうぞ。

- # 1. 脆弱性
脆弱性とは、アプリケーションやOS、ネットワークなど色んなところに潜んでいる情報セキュリティの欠陥のことです。簡単に言えばセキュリティの弱点です。攻撃者はこの脆弱性を見つけ出す「偵察」を行い、特定のアプリケーションのバージョンに重大な脆弱性があったらそこを狙って攻撃をします。

- ## 2. 攻撃手法
攻撃する方法は様々です。SQLインジェクションや、XSS、ランサムウェアや、フィッシング、数えきれないほどの攻撃手法があります。その中で、今回は11個に絞って解説したいと思います。

- ### 2-1 SQLインジェクション
SQLインジェクションとは、データベースを管理するSQLの不備、いわゆる脆弱性を利用して不正なSQL文を実行(注入)させる攻撃手法です。代表的な例では、
``` ruby:sql
1 or 1 = 1 
```
です。何故このようなコードを実行するとデータベースが流出するのでしょうか。これは、「1か1が1ならば、真である」
という条件なので、もちろん真が返ってきます。これを実行することによって、テーブルにあるすべてのデータが盗まれます。
- ### 2-2 XSS
XSSとは、脆弱なwebサイトのhtmlにjavascriptのコードを埋め込む攻撃です。たとえば、webページなどの入力ボックスに、不正なjavascriptのコードを入力してボタンを押して送信すると、不正なjavascriptのコードが実行されてしまう脆弱性です。
代表的な例では、
``` ruby:javascript
<script>alert('document.cookie')</script>
```
これは、セッション情報などが保存されるcookie情報をポップアップで表示するコードです。Websocketなどを利用してリモートでcookie情報を送信することが可能ですがそのやり方をここで載せるのはあれなので省略します。
- ### 2-3 ブルートフォースアタック(総当たり攻撃)
これは可能な限りのすべてのパスワードを試行することでパスワードを破る攻撃です。簡単に言うとスマホのパスワードって大体数字四桁とかですよね。あの0000から9999を爆速で一つずつ試行するということです。
- ### 2-4 ディレクトリトラバーサル
これは辞書ファイル(予想されるディレクトリの名前がすべて保存されたファイル)というものを使用して一つずつ予想されるディレクトリを漁るものです。
- ### 2-5 MITM(中間者)攻撃
これは不正に構築されたVPNやプロキシに接続して通信を傍受してパスワードの窃取や通信内容の改ざんを行うものです。これを使うことによってセッションハイジャック(アカウントの乗っ取りなど)が可能になります。
- ### 2-6 フィッシング攻撃
これは身近にあるものですね。いわゆる偽サイトというやつです。ここにクレジットカード情報やメールアドレス、パスワードを入力することによって偽サイトの運営者にクレジットカードを不正利用されたり、アカウントが漏洩する可能性があります。
- ### 2-7 CSRF
これはセッション情報を悪用して不正なリクエストを送信させる攻撃です。これが行われると、勝手にパスワードが変更されたりします。有名なものでは「はまちちゃん事件」といったものがありました。気になる人は調べてみてください。
- ### 2-8 クリックジャッキング
これはユーザーが意図しないボタンなどをクリックさせることによって起きる攻撃です。これが行われると自分の意志に従わずアカウントを削除してしまったり、個人情報の流出が起きます。
- ### 2-9 DNSポイズニング
これはDNSキャッシュに不正な情報を書き込んで悪意のあるサイトに飛ばす攻撃です。たまにwebで検索をしてリンクをクリックすると思いもよらないページに飛んだりした経験はありませんか？それの原因がこのDNSポイズニングです。
- ### 2-10 ソーシャルエンジニアリング
これはアナログ的な攻撃方法で、他人がスマホのパスワードを入力しているときに盗み見たりする攻撃のことです。ほかにも、SNSのDMで接近してウイルスの仕掛けられたアプリケーションを実行するように誘導されることもあります。案外こういうことが原因で起きているサイバー犯罪が多いです。実例はまたあとで言います。
- ### 2-11 DoS/DDoS攻撃
別名サービス拒否攻撃です。膨大な量のリクエストをサーバーに送ることによってサーバーに負荷をかけ、サーバーをダウンさせる攻撃です。ちなみにDoS攻撃とDDoS攻撃の違いはDoS攻撃は一つのコンピュータだけを使って大量のリクエストを送信するのと、ボットネットなどで大量のコンピュータを利用して膨大な量のリクエストを送る違いがあります。一般的にDoS攻撃はipアドレスが単一なので一つのipをブロックすることで対策しやすい傾向にありますが、DDoS攻撃になると何十個ものipが使われるので普通のユーザーなのか攻撃者なのかを判別するのが難しいです。

お分かりいただけましたでしょうか？こんなにも数多くの攻撃手法があります。まだほかにもサプライチェーンやレインボーテーブル、ゼロデイやバッファオーバーフロー、ヒープバッファオーバーフロー、権限昇格攻撃など、色々な攻撃手法があるのですがここでは紹介しきれないので省略します。
- # 3. 対策方法
ここからは対策方法についてを解説したいと思います。
- ## 4-1 インストールされている全てのソフトウェアのアップデートの確認
有効的な対策方法は常に最新のバージョンにしておくことです。こうすることで、既知の脆弱性は修正されます。でも、これだけではゼロデイ攻撃と言った攻撃に立ち向かうことはできません。次に、
- ## 4-2 セキュリティ対策ツールの導入
Nortonなどを導入することでだいぶ変わります。でも、最近の技術はすごくて、exe obfuscatorというものを使ってwindows defenderやnorton、kasperskyなどのウイルス検知をbypassするやつがgithubにあふれています。なので高度な技術を使われたらセキュリティ対策ツールだけでは不十分でしょう。
- ## 4-3 開放されているポートの確認
不必要なポートは絶対に閉じてください。会社などのネットワークだったらそこから偵察を行って攻撃をします。この前、windowsのtcp/ipの脆弱性でペイロードをipv6で送信させて任意のコードを実行させる最悪の脆弱性が見つかりました。こういったユーザーが何も操作していなくてもハッキングなどの被害に合ってしまう任意のコード実行の脆弱性のことをゼロクリックrceと言います。たった一つのポートが開いているだけでそこからipをスキャンされ、攻撃されたら任意のコードを実行されて勝手にrdpサーバーが建てられて遠隔操作される恐れがあります。なので、開放されているポートは絶対に確認しましょう。
- ## 4-4 ぺネストレーションテストを行ってみる
実際に自分のサービスに攻撃者の視点になって考えて攻撃してみましょう。意外と攻撃者の視点になることでシステムの穴が見えてきます。kaliなどを使ってmetasploitやnmapを使って攻撃をしてみましょう。実際に侵入することができたらそこの弱点を塞ぐようにしましょう。
- ## 4-5 ファイアウォールの有効化
これは基本中の基本です。これを無効化してたら死ぬほど危険です。自滅行為なので絶対やめてください。大抵の不正な通信はファイアウォールがはじいてくれるので心強いです。
- ## 4-6 ファイルの権限確認
不必要に読み書きすべての権限を与えているファイル、ディレクトリはありませんか？きちんと権限を管理していないとディレクトリトラバーサルによって個人情報が流出する恐れがあります。社外秘の情報やゲーム会社なのであればゲームの情報のリークなどに繋がってしまうのできちんと権限を管理しましょう。
- ## 4-7 強固なパスワードの使用
とても重要な情報を保管しているのであれば12桁の大文字小文字数字記号が入ったパスワードが望ましいです。これだとパスワードを解析するのに何万年もかかる計算になります。ですが技術進歩は激しく、前までは8桁の大文字小文字数字記号を解くのは現実的ではない時間がかかる解析になっていたのに今では1日足らずで解けてしまうようになっているので16桁など、長ければ長いほどいいです。だからと言ってパスワードを忘れてしまうと本末転倒なのでほどほどにしてくださいね笑
- ## 4-8 アクセスしているサイトのurl確認
もしかするとフィッシングサイトの可能性があります。urlは本当に紛らわしいので、最近は人間の目で見極めるのは難しいと言われています。たとえば、youtube.comが正しいurl名なのに、github.io/youtube.comのような紛らわしいサブドメインになっていることがあります。こういうところはブラウザのセキュリティ機能に任せるのがよいのかもしれません。
- ## 4-9 CDNなどの利用
DDoS攻撃などに耐え抜くには、CDNなどのリクエストを分散させて処理をしているサーバーを使うことによってDDoSなどのアクセスを集中させる攻撃に耐え抜くことができます。
- ## 4-10 社員の教育
先ほど言いましたがソーシャルエンジニアリングは割と多いということです。ついこの間あったDMMビットコインの流出事件では、Ginco社員にLinkedInのDMで接近をしてビットコイン約480億円を盗み取られました。ほかにも、昨年あったKADOKAWAの個人情報流出事件では、社員がフィッシング詐欺に引っ掛かり、VMWareの資格情報を窃取され、データ流出に至りました。なので、率先すべきは社員の教育です。定期的にサイバーセキュリティの対策案や顧客データの管理方法などの会議をすることがベストだと思います。自分たちで穴を見つけて、その穴を埋めるというだけです。
- ## 5. まとめ
いかがだったでしょうか。学ぶべき点がいくつかあったと思われます。いくらセキュリティ対策だと言っても、完全に防ぐことは難しいので、できる限りのことはしましょうってことです。大企業でさえもサイバー攻撃にあっているのですから個人の私たちも勿論攻撃されることはあります。私なんか何度twitterやinstagram、discordやoutlookを乗っ取られたことか。ということで、久々の記事の投稿をしてみると意外と疲れますね。けど自分でも話の整理ができるのでとてもいい時間になりました。
追記 おかげさまで私立高校受かりました！！次は公立高校受験を頑張ります！
高校の入試がすべて終わったら、また投稿頻度を上げていきたいと思います！(4月頃かな？)そのためにもコメントなどでネタ提供よろしくお願いします笑
最後まで見てくださった方、ご視聴ありがとうございました！これからもずっとよろしくお願いいたします！それと言い遅れました！明けましておめでとうございます笑