「シェルコード」とは何か【前編】
「シェルコード」とは? 凶悪なマルウェア感染を可能にする手口
攻撃者がマルウェアを感染させるための使う手段として「シェルコード」がある。どのような仕組みを持ち、どのような危険性があるのか。
「シェルコード」はコンピュータを攻撃するための、機械語で書かれたプログラムだ。「シェル」とは「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
-
製品資料
[日本シーゲイト株式会社] 実験のやり直しを防止 研究データ基盤に求められる高可用性ストレージとは -
製品資料
[株式会社Leaner Technologies] もっと安く買えるのに…… 間接材購買で“コスト削減機会”を逃さないためには -
製品資料
[株式会社セールスフォース・ジャパン] フィールドサービスの熟練技術者が「AIエージェント」を求めている理由 -
製品資料
[株式会社グリーンフィールド・オーバーシーズ・アシスタンス] 基礎から分かる「就労ビザ」 アメリカ進出を目指すなら知っておきたい取得戦略 -
製品資料
[ネットアップ合同会社] データを安全に管理しながら製造DXとAI活用を推進、その具体策とは?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
年収700万超エンジニアに共通するスキルと「もっと勉強すべきだった分野」
-
2
ソフトウェア開発組織の疲弊を防ぐ、AI駆動開発の「レビュー負荷軽減」実践事例
-
3
高額GPUを買っても成果ゼロ? 「プライベートAI」の落とし穴
-
4
ITエンジニア1265人調査 生成AIを使い込むほど「人の確認」が重い理由
-
5
全社標準Copilotに絶望? MS Copilotで問い合わせ6割減できた企業は何が違った
-
6
「企業におけるAI導入検討度とIT投資優先度」に関するアンケート
-
7
「Salesforceのテスト自動化ツール」に関するアンケート
-
8
仮想化環境の死角を“未知の脅威”が狙う時代――新たな敵をどう見破るか?
-
9
JSONをやめてPythonで送る トークン消費を約7割抑えるAIの設計
-
10
9割が頓挫する「AI内製化」 差がついたのはツールより設計力
ホワイトペーパーランキング PR
-
1
登録セキスぺが語る「SCS評価制度」の舞台裏 星を取得すべき理由と対応のコツ
-
2
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
3
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
4
「人員を増やす」という選択肢はない 情シスが負の連鎖から抜け出すには?
-
5
「問題が深刻化しやすいプロジェクト管理」から脱却する方法とは?
-
6
AI時代の組織設計:「判断と責任」を人に残すための2つの原則とは?
-
7
防御側の「3つの前提」が崩壊 AI時代のセキュリティに必要な3つの転換とは?
-
8
AI活用を停滞させる「2:6:2の壁」を乗り越えるためのポイントとは?
-
9
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
10
OSSでは困難 100超のサービスを持つマネーフォワードが実践した統合監視術
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー