「シェルコード」とは何か【前編】
「シェルコード」とは? 凶悪なマルウェア感染を可能にする手口
攻撃者がマルウェアを感染させるための使う手段として「シェルコード」がある。どのような仕組みを持ち、どのような危険性があるのか。
「シェルコード」はコンピュータを攻撃するための、機械語で書かれたプログラムだ。「シェル」とは「Linux」の「bash」や「Windows」の「コマンドプロンプト」といった、コンピュータに対する命令を解釈するソフトウェアを指す。本来シェルコードとは、文字通り「シェルを呼び出し、そこでコマンドを実行させるためのプログラム」を表す単語だった。今では、たとえシェルを呼び出さなくても、実行中のアプリケーションに挿入された段階で実行可能になる機械語のプログラムを指すようになった。
バッファ(一時的な記憶領域)に許容量を超えるデータを書き込む脆弱(ぜいじゃく)性「バッファオーバーフロー」を悪用した攻撃や、シェルに読み込ませる文字列を使ってメモリの値を不正に読み書きする「書式文字列攻撃」に、シェルコードが悪用される。攻撃者は標的のアプリケーションで致命的なエラーを発生させ、そのアプリケーションがシェルコードを実行するように仕向ける。
攻撃者がシェルコードを悪用する目的はさまざまだ。シェルコードは、侵入先のコンピュータを不正操作するためのツール群「rootkit」や、一見無害だが特定の条件で攻撃活動をするマルウェア「トロイの木馬」のインストールに加え、マルウェア対策機能の停止、不正なファイルのアップロード/ダウンロードなどを可能にする。
シェルコード悪用の仕組み
シェルコードを作成するためには、機械語や「C」「C++」などの一般的なプログラミング言語、プロセッサのアーキテクチャ、標的とするOSの仕組みに関する深い知識が求められる。例えばWindowsを狙うシェルコードは、Linuxを狙うシェルコードとは大きく異なる。
アプリケーションや機能がデータを正しく検証しないことが、シェルコードの悪用を可能にする要因だ。OSは変数、定数、配列などのデータを保持するために記憶領域を確保する。そうした記憶領域がバッファだ。一般的にコンピュータがプログラムを読み込んだりプログラムを実行したりする間に、バッファは動的に作成される。バッファの許容量を超えるデータが送り込まれるとバッファオーバーフローが発生する。収まり切らないデータが他の記憶領域やバッファにあふれ出し、その記憶領域にあるデータの一部あるいは全部を上書きしてしまうのだ。
シェルコードによる攻撃を防ぐためにソフトウェア開発者は、プログラムがどれくらいの量のデータを書き込むのかを適切に見積もる必要がある。「Java」や「C#」といった高度なメモリ管理機能を持つプログラミング言語は、そうしたメモリ管理によるエラーは起こりにくい。だがCやC++のように高度なメモリ管理機能が備わっていないプログラミング言語で書かれたアプリケーションについては、シェルコードによるメモリ悪用の危険性を考慮しなくてはいけない。
米国標準技術研究所(NIST)の脆弱性データベース「Common Vulnerabilities and Exposures」の統計によると、バッファオーバーフローに起因する被害は2017年から2018年にかけて急増した。複数の攻撃者が高度な符号化を利用しているため、侵入検知システム(IDS)によるシグネチャの照合ではシェルコードを検出することが難しくなっている。ではどのような対策がシェルコードによる攻撃に対して有効なのだろうか。後編で紹介する。
変更履歴(2020年2月3日20時33分)
記事冒頭のシェルコードに関する内容を一部変更しました。本文は変更済みです。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣 -
製品資料
[サイボウズ株式会社] AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
4
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
5
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
6
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
7
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
8
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
9
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
10
【漫画付き】ひとり情シス協会が明かす、RAG導入でしくじる企業「2つの共通点」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー