IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネイバー ビジネス プラットフォーム コーポレーションの特許一覧

特許7049432プロセス情報を使用してウェブシェルを探知する方法およびシステム
<>
  • 特許-プロセス情報を使用してウェブシェルを探知する方法およびシステム 図1
  • 特許-プロセス情報を使用してウェブシェルを探知する方法およびシステム 図2
  • 特許-プロセス情報を使用してウェブシェルを探知する方法およびシステム 図3
  • 特許-プロセス情報を使用してウェブシェルを探知する方法およびシステム 図4
  • 特許-プロセス情報を使用してウェブシェルを探知する方法およびシステム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-29
(45)【発行日】2022-04-06
(54)【発明の名称】プロセス情報を使用してウェブシェルを探知する方法およびシステム
(51)【国際特許分類】
   G06F 11/30 20060101AFI20220330BHJP
【FI】
G06F11/30 151
G06F11/30 140Z
【請求項の数】 14
(21)【出願番号】P 2020197137
(22)【出願日】2020-11-27
(65)【公開番号】P2021086636
(43)【公開日】2021-06-03
【審査請求日】2020-11-27
(31)【優先権主張番号】10-2019-0155720
(32)【優先日】2019-11-28
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】509288208
【氏名又は名称】ネイバー クラウド コーポレーション
【氏名又は名称原語表記】Naver Cloud Corporation
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アン ジュン
(72)【発明者】
【氏名】カン ボング
【審査官】松崎 孝大
(56)【参考文献】
【文献】特開2014-146307(JP,A)
【文献】中国特許出願公開第107070913(CN,A)
【文献】中国特許出願公開第109905396(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムが実行するウェブシェル探知方法であって、
ウェブサービスを提供するサーバで実行中のプロセスに対してプロセス情報を収集する段階、および
前記収集されたプロセス情報に基づき、前記プロセスがウェブシェルによって実行されたかどうかを判定する段階を含み、
前記収集する段階は、前記収集されたプロセス情報に基づいて前記プロセスに対するデータセットを生成する段階を含み、
前記判定する段階は、前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定する段階を含み、
前記生成されたデータセットが予め設定されたパターンを含めば、前記プロセスがウェブシェルによって実行されたと判定し、
前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定する段階は、
前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するかどうか、または前記プロセスの親プロセスが前記ウェブサービスによって実行されたかどうかを判定する段階、および
前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するかどうか、前記プロセスの親プロセスが前記ウェブサービスによって実行された場合、前記プロセスと連関して実行される命令語が非一般命令語を含むかどうかを判定する段階を含む
ウェブシェル探知方法。
【請求項2】
前記プロセスがウェブシェルによって実行されたと判定されれば、前記サーバの管理者にウェブシェルが探知されたことを通知する段階をさらに含む、請求項1に記載のウェブシェル探知方法。
【請求項3】
前記収集する段階は、
前記プロセスのプロセスID(PID)を収集する段階、および
前記収集されたPIDに基づいて前記プロセスに対する追加プロセス情報を収集する段階を含み、
前記追加プロセス情報は、前記プロセスの名称、前記プロセスと連関して実行される命令語、前記プロセスを実行したシステムアカウント情報、前記プロセスと連関する親プロセスのプロセスID(PPID)、前記親プロセスの名称、前記親プロセスと連関して実行される命令語、および前記親プロセスを実行したシステムアカウント情報のうちの少なくとも1つを含み、
前記データセットは、前記PIDおよび前記追加プロセス情報を含む、
請求項に記載のウェブシェル探知方法。
【請求項4】
前記判定する段階は、前記プロセスと連関して実行される命令語が非一般命令語を含むと判定された場合、前記プロセスがウェブシェルによって実行されたと判定する、請求項に記載のウェブシェル探知方法。
【請求項5】
前記非一般命令語は、予め設定された非一般命令語として、ps、ls、cd、cat、およびfindのうちの少なくとも1つを含む、請求項に記載のウェブシェル探知方法。
【請求項6】
前記プロセスと連関して実行される命令語が予め設定された一般命令語以外の命令語を含む場合、前記プロセスと連関して実行される命令語が非一般命令語を含むものと判定される、請求項に記載のウェブシェル探知方法。
【請求項7】
前記プロセスの親プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致すれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたと判定される、請求項に記載のウェブシェル探知方法。
【請求項8】
前記プロセスの親プロセスを実行したシステムアカウント情報がアパッチまたはノーバディであれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたと判定される、請求項に記載のウェブシェル探知方法。
【請求項9】
前記生成されたデータセットは待機キューに追加され、
前記待機キューに追加されたデータセットに対し、順に、前記追加されたデータセットが前記予め設定されたパターンを含むものであるかどうかが判定される、
請求項に記載のウェブシェル探知方法。
【請求項10】
前記追加プロセス情報は、前記プロセスの名称、前記プロセスと連関して実行される命令語、前記プロセスを実行したシステムアカウント情報、前記プロセスと連関する親プロセスのプロセスID(PPID)、前記親プロセスの名称、前記親プロセスと連関して実行される命令語、および前記親プロセスを実行したシステムアカウント情報のうちの少なくとも2つを含み、
前記予め設定されたパターンは、前記追加プロセス情報に対して予め設定されたパターンである、
請求項に記載のウェブシェル探知方法。
【請求項11】
請求項1~10のうちのいずれか一項に記載の方法をコンピュータで実行させるためのコンピュータ読み取り可能な記憶媒体に格納された、プログラム。
【請求項12】
ウェブシェルを探知するコンピュータシステムであって、
コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、
前記少なくとも1つのプロセッサは、ウェブサービスを提供するサーバで実行中のプロセスに対してプロセス情報を収集し、前記収集されたプロセス情報に基づき、前記プロセスがウェブシェルによって実行されたかどうかを判定し、
前記少なくとも1つのプロセッサは、
前記収集された情報に基づいて前記プロセスに対するデータセットを生成し、
前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定し、
前記生成されたデータセットが予め設定されたパターンを含めば、前記プロセスがウェブシェルによって実行されたと判定し、
前記少なくとも1つのプロセッサは、前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するかどうか、または前記プロセスの親プロセスが前記ウェブサービスによって実行されたかどうかを判定し、前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するかどうか、前記プロセスの親プロセスが前記ウェブサービスによって実行された場合、前記プロセスと連関して実行される命令語が非一般命令語を含むかどうかを判定する
コンピュータシステム。
【請求項13】
前記プロセスがウェブシェルによって実行されたと判定されれば、前記サーバの管理者にウェブシェルが探知されたことを通知する通知部をさらに備える、請求項12に記載のコンピュータシステム。
【請求項14】
前記少なくとも1つのプロセッサは、前記プロセスと連関して実行される命令語が非一般命令語を含むと判定された場合、前記プロセスがウェブシェルによって実行されたと判定する、請求項12に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ウェブサービスを提供するサーバを攻撃するウェブシェル(web shell)を探知する方法およびシステムに関し、より詳細には、ウェブサービスを提供するサーバで実行中のプロセスの実行情報に基づいてウェブシェルを探知する方法およびシステムに関する。
【背景技術】
【0002】
ウェブシェルとは、悪質なユーザがサーバのアップロードの弱点を利用してサーバに命令を下すことができるようにするコードを意味する。ウェブシェルはサーバスクリプト(jsp、php、aspなど)によって生成され、このようなスクリプトはサーバの弱点を利用してアップロードされる。ハッカーのような悪質なユーザは、ウェブシェルを利用してサーバの保安システムを回避しながら認証を経ずにサーバに接続することができ、サーバに対して命令を下すことができる。
【0003】
このようなウェブシェルがサーバにアップロードされれば極めて危険な状況となるため、迅速に探知する必要がある。したがって、サーバに対する負荷を最小化すると同時に、ウェブシェルに該当するファイルが暗号化あるいは難読化されている場合であっても、迅速かつ正確にウェブシェルを探知することができる方法およびシステムが求められている。
【0004】
特許文献1(登録日2006年12月1日)には、検索エンジンを利用したウェブサーバの弱点点検システムおよび方法に関する技術が開示されている。
【0005】
上述した情報は、本発明の理解を助けるためのものに過ぎず、従来技術の一部を形成しない内容を含むこともあるし、従来技術が当業者に提示することのできる内容を含まないこともある。
【先行技術文献】
【特許文献】
【0006】
【文献】韓国登録特許第10-0655492号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
一実施形態は、ウェブサービスを提供するサーバで実行中のプロセスに対してプロセス情報を収集し、収集されたプロセス情報に基づき、該当のプロセスがウェブシェルによって実行されたかどうかを判定することによってウェブシェルを探知する、ウェブシェル探知方法およびウェブシェルを探知するためのコンピュータシステムを提供する。
【0008】
一実施形態は、実行中のプロセスのプロセス情報に対応するデータセットが一般的には使用されない命令語を使用するような予め設定されたパターンを含む場合、該当のプロセスはウェブシェルによって実行されたものと判定することにより、サーバ内のファイルの内容を分析しなくても、ウェブシェルをリアルタイムで正確に探知することができる方法を提供する。
【課題を解決するための手段】
【0009】
一側面において、コンピュータシステムが実行するウェブシェル探知方法であって、ウェブサービスを提供するサーバで実行中のプロセスに対してプロセス情報を収集する段階、および前記収集されたプロセス情報に基づき、前記プロセスがウェブシェルによって実行されたかどうかを判定する段階を含む、ウェブシェル探知方法を提供する。
【0010】
前記ウェブシェル探知方法は、前記プロセスがウェブシェルによって実行されたと判定されれば、前記サーバの管理者にウェブシェルが探知されたことを通知する段階をさらに含んでよい。
【0011】
前記収集する段階は、前記収集されたプロセス情報に基づいて前記プロセスに対するデータセットを生成する段階を含み、前記判定する段階は、前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定する段階を含み、前記生成されたデータセットが予め設定されたパターンを含めば、前記プロセスがウェブシェルによって実行されたものと判定してよい。
【0012】
前記収集する段階は、前記プロセスのプロセスID(PID)を収集する段階、および前記収集されたPIDに基づいて前記プロセスに関する追加プロセス情報を収集する段階を含み、前記追加プロセス情報は、前記プロセスの名称、前記プロセスと連関して実行される命令語(cmdline)、前記プロセスを実行したシステムアカウント情報、前記プロセスと連関する親プロセスのプロセスID(PPID)、前記親プロセスの名称、前記親プロセスと連関して実行される命令語(cmdline)、および前記親プロセスを実行したシステムアカウント情報のうちの少なくとも1つを含み、前記データセットは、前記PIDおよび前記追加プロセス情報を含んでよい。
【0013】
前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定する段階は、前記プロセスを実行したシステムアカウント情報(owner)が前記ウェブサービスを実行するシステムアカウント情報と一致するかどうか、または前記プロセスの親プロセスが前記ウェブサービスによって実行されたものであるかどうかを判定する段階、および前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するか、前記プロセスの親プロセスが前記ウェブサービスによって実行されたものである場合、前記プロセスと連関して実行される命令語が非一般命令語を含むかどうかを判定する段階を含んでよい。
【0014】
前記判定する段階は、前記プロセスと連関して実行される命令語が非一般命令語を含むと判定された場合、前記プロセスがウェブシェルによって実行されたものと判定してよい。
【0015】
前記非一般命令語は、予め設定された非一般命令語として、ps、ls、cd、cat、およびfindのうちの少なくとも1つを含んでよい。
【0016】
前記プロセスと連関して実行される命令語が予め設定された一般命令語以外の命令語を含む場合、前記プロセスと連関して実行される命令語が非一般命令語を含むものと判定されてよい。
【0017】
前記プロセスの親プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致すれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたものと判定されてよい。
【0018】
前記プロセスの親プロセスを実行したシステムアカウント情報がアパッチ(apache)またはノーバディ(nobody)であれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたものと判定されてよい。
【0019】
前記生成されたデータセットは待機キュー(queue)に追加され、前記待機キューに追加されたデータセットに対し、順に、前記追加されたデータセットが前記予め設定されたパターンを含むかどうかを判定してよい。
【0020】
前記追加プロセス情報は、前記プロセスの名称、前記プロセスと連関して実行される命令語(cmdline)、前記プロセスを実行したシステムアカウント情報、前記プロセスと連関する親プロセスのプロセスID(PPID)、前記親プロセスの名称、前記親プロセスと連関して実行される命令語(cmdline)、および前記親プロセスを実行したシステムアカウント情報のうちの少なくとも2つを含み、前記予め設定されたパターンは、前記追加プロセス情報に対して予め設定されたパターンであってよい。
【0021】
他の一側面において、ウェブシェルを探知するコンピュータシステムであって、コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、ウェブサービスを提供するサーバで実行中のプロセスに対してプロセス情報を収集し、前記収集されたプロセス情報に基づき、前記プロセスがウェブシェルによって実行されたかどうかを判定する、コンピュータシステムを提供する。
【0022】
前記コンピュータシステムは、前記プロセスがウェブシェルによって実行されたと判定されれば、前記サーバの管理者にウェブシェルが探知されたことを通知する通知部をさらに備えてよい。
【0023】
前記少なくとも1つのプロセッサは、前記収集された情報に基づいて前記プロセスに対するデータセットを生成し、前記生成されたデータセットが予め設定されたパターンを含むかどうかを判定し、前記生成されたデータセットが予め設定されたパターンを含めば、前記プロセスがウェブシェルによって実行されたものと判定してよい。
【0024】
前記少なくとも1つのプロセッサは、前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報(owner)と一致するか、または前記プロセスの親プロセスが前記ウェブサービスによって実行されたかどうかを判定し、前記プロセスを実行したシステムアカウント情報が前記ウェブサービスを実行するシステムアカウント情報と一致するか、前記プロセスの親プロセスが前記ウェブサービスによって実行されたものである場合、前記プロセスと連関して実行される命令語が非一般命令語を含むかどうかを判定し、前記プロセスと連関して実行される命令語が非一般命令語を含むものと判定された場合、前記プロセスがウェブシェルによって実行されたものと判定してよい。
【発明の効果】
【0025】
実行中のプロセスに対して収集されたプロセス情報を利用してウェブシェルを探知することにより、サーバ内のファイルの内容を分析しなくてもウェブシェルをリアルタイムで正確に探知することができ、サーバに対する負荷を最小化することができる。
【0026】
ウェブシェルに該当するファイルの内容ではなく、ウェブシェルによって実行されるプロセスの行為に基づいてウェブシェルが探知されることにより、ウェブシェルに該当するファイルが暗号化または難読化されていたり、その内容が変更されていたりする場合であっても、ウェブシェルを正確に探知することができる。
【図面の簡単な説明】
【0027】
図1】一実施形態における、ウェブサービスを提供するサーバで実行中のプロセスのプロセス情報に基づいてウェブシェルを探知する方法を示した図である。
図2】一実施形態における、ウェブシェルを探知するコンピュータシステム、ウェブサービスを提供するサーバ、およびウェブサービスを提供するサーバを管理する管理者端末を示した図である。
図3】一実施形態における、ウェブサービスを提供するサーバで実行中のプロセスのプロセス情報に基づいてウェブシェルを探知する方法を示したフローチャートである。
図4】一例における、プロセス情報が含むパターンによって該当のプロセスがウェブシェルによって実行されたかを判定する方法を示したフローチャートである。
図5】一例における、プロセスに関するプロセス情報をリアルタイムで収集する方法と、収集されたプロセス情報を使用してウェブシェルを探知する方法を示したフローチャートである。
【発明を実施するための形態】
【0028】
以下、本発明の実施形態について、添付の図面を参照しながら詳しく説明する。
【0029】
図1は、一実施形態における、ウェブサービスを提供するサーバで実行中のプロセスのプロセス情報に基づいてウェブシェルを探知する方法を示した図である。
【0030】
図1は、ウェブサービスを提供するサーバ(ウェブサービス提供サーバ)110、サーバ110を管理する管理者(管理者が使用する管理者端末)130と、およびサーバ110を攻撃するウェブシェル120を探知するコンピュータシステム(ウェブシェル探知システム)100の動作を示している。
【0031】
サーバ110は、ウェブサービスを提供するウェブサーバであってよい。ウェブシェル120とは、ハッカーのような悪質なユーザがサーバ110の弱点を利用してサーバ110に命令を下すことができるようにするコードを意味してよい。コンピュータシステム100は、このようなサーバ110にアップロードされているウェブシェル120を探知するための装置であってよい。
【0032】
コンピュータシステム100は、ウェブサービスを提供するサーバ110で実行中のプロセス(複数のプロセス)に対してプロセス情報(すなわち、プロセスの実行と関連する情報)を収集してよく、収集されたプロセス情報に基づき、サーバ110にウェブシェル120が存在するかどうかを探知してよい。また、コンピュータシステム100は、ウェブシェル120が探知された場合、ウェブシェル120が探知された事実をサーバ110の管理者130に通知してよい。
【0033】
従来は、ウェブシェル120を探知するために、ウェブシェル120内に特定の文字列が含まれるかどうかを検索していた。例えば、パケット内から特定の文字列が検出される場合を検索していた。または、ウェブシェル120を探知するために、パッケージ内から重要な情報が抜けていないかどうかを確認する必要があった。
【0034】
このような場合には、サーバ110内のすべてのファイルを対象に文字列を検索しなければならないため、サーバ110側の負荷が増加する。実施形態では、ファイル内の文字列を検索してウェブシェル120を探知するのではなく、実行されたプロセスに関するプロセス情報に基づいてウェブシェル120を探知するため、サーバ110側の負荷を減らすことができる。
【0035】
また、従来は、ファイル内で文字列を検索するために要求されるサーバ110の負荷や負担を考慮した結果、ウェブシェル120の探知を長い周期でのみ行っていた。しかし、実施形態では、実行中のプロセスに関するプロセス情報に基づいてウェブシェル120を探知するため、リアルタイムでウェブシェル120を探知することができる。
【0036】
また、実施形態によっては、ウェブシェル120に対応するファイルが暗号化あるいは難読化されている場合であっても、ウェブシェル120に対応するファイルの内容を確認する必要がないため、実行中のプロセスに関するプロセス情報(すなわち、プロセスの行為)に基づいてウェブシェル120を探知することができる。
【0037】
また、実施形態によっては、ウェブシェル120に対応するファイルの内容を確認する必要がないため、ウェブシェル120に対応するファイルの文字列が変更された(すなわち、文字列のパターンが変更された)新規のウェブシェル120であっても、迅速かつ正確に探知することができる。
【0038】
また、従来、新規のウェブシェル120を探知するためには、1)探知しようとするウェブシェル120を確保しなければならず、2)確保したウェブシェル120を分析しなければならず、3)分析した情報に基づいて該当のウェブシェル120に対するパターンを生成した後、4)製品にこれを反映(アップデート)することによってウェブシェル120の探知が可能であったため、新規のウェブシェル120を探知するまでに長い時間がかかった。これに反し、実施形態では、リアルタイムで収集したプロセスのプロセス情報(プロセス実行情報)を使用してウェブシェル120を探知することができるため、新規のウェブシェル120であっても、迅速かつ正確に探知することができる。
【0039】
コンピュータシステム100がサーバ110で実行中のプロセス(複数のプロセス)に対してプロセス情報を収集する具体的な方法、および収集されたプロセス情報に基づいてウェブシェル120を探知する具体的な方法については、図2~5を参照しながらさらに詳しく説明する。
【0040】
図2は、一実施形態における、ウェブシェルを探知するコンピュータシステム、ウェブサービスを提供するサーバ、およびウェブサービスを提供するサーバを管理する管理者端末を示した図である。
【0041】
図2は、図1を参照しながら説明したウェブサービスを提供するサーバ110、サーバ110を管理する管理者の管理者端末130、およびサーバ110を攻撃するウェブシェル120を探知するコンピュータシステム100を示している。
【0042】
サーバ110は、少なくとも1つのウェブサービスを提供するウェブサーバであってよい。ウェブサービスは、図には示されていない、クライアントの要求またはクライアントからの接続によってクライアント側に提供されるウェブ基盤のサービスであってよい。サーバ110は、少なくとも1つのコンピューティング装置によって実現されてよい。
【0043】
サーバ110は、管理者端末130を利用して管理者によって管理されてよい。管理者は、サーバ110の運営および保安を担当する担当者であってよい。管理者端末130は、管理者がサーバ110を運営および管理するために利用するユーザ端末130であってよい。例えば、管理者端末130は、例えば、スマートフォン、PC(personal computer)、ノート型PC(laptop computer)、タブレット(tablet)、モノのインターネット(Internet Of Things)機器、またはウェアラブルコンピュータ(wearable computer)などの装置であってもよいし、その他のサーバ110に付随するコンピューティング装置またはサーバ110の一部であってもよい。
【0044】
コンピュータシステム100は、サーバ110を攻撃したり、サーバ110の保安に脅威を与えたりするウェブシェル120を探知する装置であってよい。コンピュータシステム100は、少なくとも1つのコンピューティング装置によって実現されてよい。コンピュータシステム100は、サーバ110とは別の(すなわち、サーバ110外部の)コンピューティング装置またはサーバで実現されてもよいし、あるいは、図に示すものとは異なり、サーバ110の一部として実現されてもよい。言い換えれば、コンピュータシステム100は、サーバ110に含まれる装置であってよい。
【0045】
コンピュータシステム100は、ウェブサービスを提供するサーバ110で実行中のプロセス(複数のプロセス)に対して(すなわち、それぞれのプロセスに対して)プロセス情報を収集してよい。プロセス情報は、プロセスの実行と関連する情報を含んでよい。コンピュータシステム100は、このような収集されたプロセス情報に基づいてプロセス情報と連関するプロセスがウェブシェル120によって実行されたかを判定することにより、ウェブシェル120を探知してよい。
【0046】
コンピュータシステム100は、少なくとも1つのコンピューティング装置を含んでよい。
【0047】
コンピュータシステム100は、図に示すように、メモリ230、プロセッサ220、通信部210、および入力/出力インタフェース240を含んでよい。
【0048】
メモリ230は、コンピュータ読み取り可能な記憶媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような非一時的大容量記憶装置を含んでよい。ここで、ROMと非一時的大容量記憶装置は、メモリ230とは区分される別の非一時的記憶装置として含まれてもよい。また、メモリ230には、オペレーティングシステムと、少なくとも1つのプログラムコードが格納されてよい。このようなソフトウェア構成要素は、メモリ230とは別のコンピュータ読み取り可能な記憶媒体からロードされてよい。このような別のコンピュータ読み取り可能な記憶媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記憶媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記憶媒体ではない通信部210を通じてメモリ230にロードされてもよい。
【0049】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ230または通信部210によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ230にロードされたプログラムコードにしたがって受信される命令を実行するように構成されてよい。このようなプロセッサ220による動作により、コンピュータシステム100は、ウェブサービスを提供するサーバ110で実行中のプロセスに対してプロセス情報を収集してよく、収集されたプロセス情報を使用することにより、プロセス情報と連関するプロセスがウェブシェル120によって実行されたかどうかを判定してよい。
【0050】
プロセス情報の収集およびウェブシェル120の探知を実行するための、図には示されていない、プロセッサ220の構成は、それぞれ、プロセッサ220の一部としてソフトウェアおよび/またはハードウェアモジュールで実現されてよく、プロセッサによって実現される機能(機能ブロック)を示してよい。
【0051】
通信部210は、コンピュータシステム100が他の装置(例えば、サーバ110、管理者端末130、またはその他のサーバやその他のユーザ端末など)と通信するための構成であってよい。言い換えれば、通信部210は、他の装置に対してデータおよび/または情報を送信/受信する、コンピュータシステム100のアンテナ、データバス、ネットワークインタフェースカード、ネットワークインタフェースチップ、およびネットワーキングインタフェースポートなどのようなハードウェアモジュール、またはネットワークデバイスドライバ(driver)またはネットワーキングプログラムのようなソフトウェアモジュールであってよい。
【0052】
通信部210は、プロセス情報により、プロセスがウェブシェル120によって実行されるものと判定された場合に、サーバ110の管理者(すなわち、管理者端末130)にウェブシェル120が探知されたことを通知するための通知部を備えてよい。
【0053】
入力/出力インタフェース240は、キーボードまたはマウスなどのような入力装置およびディスプレイやスピーカのような出力装置とのインタフェースのための手段であってよい。コンピュータシステム100は、実施形態によっては、このような入力/出力インタフェース240を含まなくてもよい。
【0054】
また、実施形態によって、コンピュータシステム100は、図に示した構成要素よりも多くの構成要素を含んでもよい。
【0055】
以上、図1を参照しながら説明した技術的特徴は、図2にもそのまま適用可能であるため、重複する説明は省略する。
【0056】
以下の詳細な説明において、コンピュータシステム100の構成(例えば、プロセス220)によって実行される動作は、説明の便宜上、コンピュータシステム100によって実行される動作として説明する。
【0057】
また、上述したように、コンピュータシステム100は、サーバ110の一部として実現されてもよいため、コンピュータシステム100またはコンピュータシステム100の構成によって実行される動作は、サーバ110によって実行されてもよい。これに関して重複する説明は省略する。
【0058】
図3は、一実施形態における、ウェブサービスを提供するサーバで実行中のプロセスのプロセス情報に基づいてウェブシェルを探知する方法を示したフローチャートである。
【0059】
段階310で、コンピュータシステム100は、ウェブサービスを提供するサーバ110で実行中のプロセスに対してプロセス情報を収集してよい。サーバ110が複数のプロセスを実行している場合、コンピュータシステム100は、プロセスのそれぞれのプロセス情報を収集してよい。プロセス情報は、プロセスの実行と関連する情報であって、プロセス実行情報と呼ばれてもよい。
【0060】
段階310でのプロセス情報の収集は、プロセスノーティファイ(process notify)を使用して実行されてよい。このようなプロセス情報の収集は、サーバ110の運営のためにプロセス情報を収集したり、ウイルス探知のためにプロセス情報を収集したりすることに該当してよい。したがって、実施形態のウェブシェル120の探知は、サーバ110の運営のためのプロセス情報の収集、またはウイルス探知のためのプロセス情報の収集によって実行されてよい。
【0061】
段階320で、コンピュータシステム100は、収集されたプロセス情報に基づき、収集されたプロセス情報と連関するプロセスがウェブシェル120によって実行されたかどうかを判定してよい。収集されたプロセスと連関するプロセスがウェブシェル120によって実行されたと判定することにより、コンピュータシステム100は、ウェブシェル120を探知してよい。したがって、コンピュータシステム100は、ウェブシェル120に該当するファイルの内容やサーバ110に格納されたファイルの文字列を確認しなくてもウェブシェル120を探知することができる。また、コンピュータシステム100は、ウェブシェル120に該当するファイルの暗号化/難読化/変更に関係なく、ウェブシェル120を正確に探知することができる。さらに、コンピュータシステム100は、実行中のプロセスのプロセス情報に基づいてウェブシェル120を探知することにより、ウェブシェル120をリアルタイムで探知することができる。
【0062】
段階330で、コンピュータシステム100は、収集されたプロセス情報と連関するプロセスがウェブシェル120によって実行されたと判定されれば、サーバ110の管理者(すなわち、管理者端末130)にウェブシェル120が探知されたことを通知してよい。このような通知により、サーバ110の管理者は、サーバ110に脅威を与えるウェブシェル120の存在を把握することができ、これに対する適切な措置を取ることができる。管理者は、ウェブシェル120による攻撃/侵害状況をコンピュータシステム100からリアルタイムで受信してよい。このような通知は、上述された通知部を経て管理者端末130で実行されてよい。
【0063】
以下では、上述した段階310で示した、プロセス情報を収集する方法についてさらに詳しく説明する。
【0064】
段階312で、コンピュータシステム100は、ウェブサービスを提供するサーバ110で実行中のプロセスのプロセスID(Process ID:PID)を収集してよい。
【0065】
段階314で、コンピュータシステム100は、収集されたPIDに基づいて該当のプロセスに関する追加プロセス情報を収集してよい。収集される追加プロセス情報は、該当のプロセスの名称、該当のプロセスと連関して実行される命令語(cmdline)、該当のプロセスを実行したシステムアカウント情報(owner)、該当のプロセスと連関する親プロセスのプロセスID(PPID)(すなわち、親プロセスID)、親プロセスの名称、親プロセスと連関して実行される命令語(cmdline)、および親プロセスを実行したシステムアカウント情報(owner)のうちの少なくとも1つを含んでよい。親プロセスとは、プロセスの上位プロセスを示してよい。親プロセスは、あるプロセスの直接的な上位プロセスを示すことに限定されず、該当の上位プロセスの上位プロセスまたはそれ以上の上位プロセスを包括してよい。
【0066】
段階316で、コンピュータシステム100は、収集されたプロセス情報に基づいてプロセスに対するデータセットを生成してよい。生成されたデータセットは、プロセスがウェブシェル120によって実行されたかどうかを判定するために適するように、収集されたプロセス情報が加工されたデータであってよい。生成されたデータセットは、上述した段階312で収集されたPIDおよび段階314で収集された追加プロセス情報を含んでよい。
【0067】
コンピュータシステム100は、収集されたプロセス情報に基づくデータセットを分析することにより、プロセス情報と連関するプロセスがウェブシェル120によって実行されたかどうかを判定してよい。
【0068】
以下では、上述した段階320で示した、プロセス情報と連関するプロセスがウェブシェル120によって実行されたかどうかを判定する方法についてさらに詳しく説明する。
【0069】
段階322で、コンピュータシステム100は、段階316で生成されたデータセットが予め設定されたパターンを含むかどうかを判定してよい。予め設定されたパターンは、該当のデータセットと連関するプロセスがウェブシェル120によって実行されたものであることを示すものであってよい。予め設定されたパターンは、コンピュータシステム100のユーザ(または、開発者)またはサーバ110の管理者によって予め設定されてよい。段階316で生成されたデータセットがこのような予め設定されたパターンと比較されることにより、該当のデータセットと連関するプロセスがウェブシェル120によって実行されたものであるかどうかが判定されてよい。
【0070】
段階324で、コンピュータシステム100は、段階316で生成されたデータセットが予め設定されたパターンを含むものであれば、該当のデータセットと連関するプロセスがウェブシェル120によって実行されたと判定してよい。
【0071】
また、段階326で、コンピュータシステム100は、段階316で生成されたデータセットが予め設定されたパターンを含まないものであれば、該当のデータセットと連関するプロセスはウェブシェル120によって実行されたものでないと判定してよい。
【0072】
予め設定されたパターンは、追加プロセス情報に対して予め設定されたパターンであってよい。例えば、予め設定されたパターンは、追加プロセス情報が含む可能性のある2種類以上の情報が組み合わされたパターンとして設定されてよい。言い換えれば、追加プロセス情報は、プロセスの名称、プロセスと連関して実行される命令語(cmdline)、プロセスを実行したシステムアカウント情報、プロセスと連関する親プロセスのプロセスID(PPID)、親プロセスの名称、親プロセスと連関して実行される命令語(cmdline)、および親プロセスを実行したシステムアカウント情報のうちの少なくとも2つを含んでよく、予め設定されたパターンは、このような追加プロセス情報に対して予め設定されたパターンとして、追加プロセス情報が含む2種類以上の情報が組み合わされたパターンであってよい。
【0073】
生成されたデータセットが予め設定されたパターンを含むかによってウェブシェル120を探知する具体的な方法については、図4を参照しながらさらに詳しく説明する。
【0074】
一方、段階316で生成されたデータセットは、待機キュー(queue)に追加されてよい。段階322では、待機キューに追加されたデータセットに対し、順に、該当のデータセットが予め設定されたパターンを含むものであるかどうかを判定してよい。したがって、複数のプロセスと連関する複数のデータセットが待機キューに追加されている場合、順に、段階322での判定が実行されてよい。すなわち、1つのプロセスがウェブシェル120によって実行されたかどうかが判定された後に、次のプロセスに対し、該当の次のプロセスがウェブシェル120によって実行されたかどうかが判定されてよい。
【0075】
以上、図1および図2を参照しながら説明した技術的特徴は、図3にもそのまま適用可能であるため、重複する説明は省略する。
【0076】
図4は、一例における、プロセス情報が含むパターンによって該当のプロセスがウェブシェルによって実行されたかどうかを判定する方法を示したフローチャートである。
【0077】
段階410で、コンピュータシステム100は、収集されたプロセス情報(すなわち、生成されたデータセット)と連関するプロセスまたはその親プロセスが、サーバ110が提供するウェブサービスと連関しているかどうかを判定してよい。例えば、コンピュータシステム100は、収集されたプロセス情報と連関するプロセスを実行したシステムアカウント情報(owner)が、サーバ110が提供するウェブサービスを実行するシステムアカウント情報と一致するかどうか、または前記プロセスの親プロセスが前記ウェブサービスによって実行されたものであるかどうかを判定してよい。プロセスを実行したシステムアカウント情報が、サーバ110が提供するウェブサービスを実行するシステムアカウント情報と一致せず、該当のプロセスの親プロセスがウェブサービスによって実行されたものでなければ、コンピュータシステム100は、前記プロセスはウェブシェル120によって実行されたものでないと判定してよい。言い換えれば、収集されたプロセス情報と連関するプロセスおよびその親プロセスが、サーバ110が提供するウェブサービスと連関していなければ、該当のプロセスはウェブシェル120によって実行されたものでないと判定されてよい。
【0078】
段階420で、コンピュータシステム100は、収集されたプロセス情報と連関するプロセスおよびその親プロセスが、サーバ110が提供するウェブサービスと連関していれば(例えば、収集されたプロセス情報と連関するプロセスを実行したシステムアカウント情報が、サーバ110が提供するウェブサービスを実行するシステムアカウント情報と一致するか、または該当のプロセスの親プロセスが、前記ウェブサービスによって実行されたものであれば)、前記プロセスと連関して実行される命令語が非一般命令語を含むかどうかを判定してよい。
【0079】
コンピュータシステム100は、前記プロセスと連関して実行される命令語が非一般命令語を含まなければ、コンピュータシステム100は、該当のプロセスがウェブシェル120によって実行されたものでないと判定してよい。
【0080】
一方、コンピュータシステム100は、前記プロセスと連関して実行される命令語が非一般命令語を含むと判定された場合には、該当のプロセスがウェブシェル120によって実行されたものと判定してよい。
【0081】
一例として、収集されたプロセス情報と連関するプロセスの親プロセスがウェブサービス(または、親サービスがウェブサービスによって実行されたプロセス)でありながら、前記プロセスが一般的に実行されない命令語を実行する場合には、該当のプロセスがウェブシェル120によって実行されたものと判定されてよい。
【0082】
また、収集されたプロセス情報と連関するプロセスを実行したシステムアカウント情報(owner)がウェブサービスを実行するシステムアカウント情報と一致しながら、前記プロセスが一般的に実行されない命令語を実行する場合には、該当のプロセスがウェブシェル120によって実行されたものと判定されてよい。
【0083】
上述した非一般命令語は、予め設定された非一般命令語として、例えば、ps、ls、cd、cat、およびfindのうちの少なくとも1つを含んでよい。非一般命令語は、サーバ110が提供するウェブサービスが実行するプロセスが一般的に実行しない命令語であってよい。非一般命令語は、コンピュータシステム100のユーザ(または、開発者)またはサーバ110の管理者によって予め設定されてよい。
【0084】
または、コンピュータシステム100は、プロセスと連関して実行される命令語が予め設定された一般命令語以外の命令語を含む場合には、前記プロセスと連関して実行される命令語が非一般命令語を含むと判定してよい。言い換えれば、非一般命令語の代りに、一般命令語(ウェブサービスが実行するプロセスが一般的に実行する命令語)を予め設定してよい。プロセスにより、このような一般命令語ではない他の命令語が実行されれば、該当のプロセスは非一般命令語を含むものと判定されてよい。
【0085】
一方、プロセスの親プロセスがウェブサービスによって実行されたかどうかを判断するにおいては、親プロセスを実行したシステムアカウント情報とウェブサービスを実行するシステムアカウント情報とを比較してよい。プロセスの親プロセスを実行したシステムアカウント情報がウェブサービスを実行するシステムアカウント情報と一致すれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたもの(または、ウェブサービスに該当するもの)と判定されてよい。
【0086】
または、プロセスの親プロセスを実行したシステムアカウント情報がアパッチ(apache)またはノーバディ(nobody)であれば、前記プロセスの親プロセスは前記ウェブサービスによって実行されたもの(または、ウェブサービスに該当するもの)と判定されてよい。アパッチ(apache)またはノーバディ(nobody)は、ウェブサービスを実行するシステムアカウント情報(owner)の一例であってよい。
【0087】
上述したように、予め設定されたパターンは、「プロセスを実行したシステムアカウント情報」および「プロセスと連関して実行される命令語」を組み合わせたパターンを示してよい。または、予め設定されたパターンは、「プロセスの親プロセスを実行したシステムアカウント情報」および「プロセスと連関して実行される命令語」を組み合わせたパターンを示してよい。
【0088】
したがって、実施形態に係るコンピュータシステム100は、ウェブシェル100が実行するプロセスの動作や、ウェブシェル100が実行されるときに発生する状況に該当するパターン(複数のパターン)を予め設定しておき、収集されたプロセス情報でこのような予め設定されたパターンが探知される場合、ウェブシェル120を探知することができる。
【0089】
実施形態に係るウェブシェル120に該当する予め設定されたパターンは、ウェブシェル120が実行される場合に発生する、次の2つの特性に基づいて設定されてよい。先ず、1)ウェブシェル120は、サーバ110が提供するウェブサービスによって実行されるため、ウェブシェル120によって実行されるプロセスは、実行時に、ウェブサービスの子プロセスとして実行されるか、ウェブサービスと同じシステムアカウントで実行される。次に、2)ウェブシェル120が実行される場合、ウェブサービス(ウェブサービスと連関するプロセス)では、一般的には実行されない命令語が実行される。前記1)および2)の特性を組み合わせてウェブサービスに該当するプロセスまたはその下位プロセスに該当するプロセスで一般的に実行する命令語以外の非一般命令語が実行される場合、ウェブシェル120が実行されたものと判定してよく、これに対応するパターン(複数のパターン)が設定されてよい。
【0090】
一方、実施形態によっては、上述したシステムアカウント(システムアカウント情報)の代りに、プロセッサの名称が段階410の判定において使用されてもよい。例えば、段階410は、プロセスの名称がウェブサービスと連関するプロセスの名称と一致するか、またはプロセスの親プロセスの名称がウェブサービスと連関するプロセスの名称と一致するかどうかを判定してもよい。
【0091】
以上、図1~3を参照しながら説明した技術的特徴は、図4にもそのまま適用可能であるため、重複する説明は省略する。
【0092】
図5は、一例における、プロセスに関するプロセス情報をリアルタイムで収集する方法と、収集されたプロセス情報を使用してウェブシェルを探知する方法とを示したフローチャートである。
【0093】
図に示した510は、コンピュータシステム100のサーバ110で実行中のプロセスに対してプロセス実行情報をリアルタイムで収集する機能の実行を示している。
【0094】
コンピュータシステム100は、サーバ110で実行中のプロセスに対するプロセス情報をリアルタイムで収集してよく(512)、収集されたプロセス情報に基づき、プロセスに該当するデータセットを生成してよい(514)。データセットに含まれるプロセス情報は530に示している。プロセスID以外のデータは、上述した追加プロセス情報に該当してよい。コンピュータシステム100は、生成されたデータセットをキュー(queue)に追加してよく(516)、プロセス情報収集機能を終了するか繰り返してよい(518)。
【0095】
図に示した520は、コンピュータシステム100のサーバ110に脅威を与えるウェブシェル120が存在するかを判定する機能の実行を示している。
【0096】
コンピュータシステム100は、キューにデータセットが存在するかどうかを判定してよい(522)。キューにデータセットが存在しなければ、コンピュータシステム100は、キューにデータセットが追加されるまで待機してよい(524)。キューにデータセットが存在すれば、コンピュータシステム100は、データセットに予め設定されたパターン(ウェブシェルパターン)が存在するかどうかを判定してよい(526)。コンピュータシステム100は、データセットに予め設定されたパターンが存在しなければ、次のデータセットに対する判定を続けてよく、データセットに予め設定されたパターンが存在すれば、ウェブシェル120が存在することを探知してよい。ウェブシェル120が存在することが探知されれば、コンピュータシステム100は、サーバ110の管理者に、ウェブシェル120による侵害/脅威をリアルタイムで通知してよい(528)。
【0097】
以上、図1~4を参照しながら説明した技術的特徴は、図5にもそのまま適用可能であるため、重複する説明は省略する。
【0098】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および/またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0099】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ記憶媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記憶媒体に格納されてよい。
【0100】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に格納されてよい。ここで、媒体は、コンピュータ実行可能なプログラムを継続して格納するものであっても、実行またはダウンロードのために一時格納するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記憶手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例は、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が格納されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記憶媒体または格納媒体が挙げられる。
【0101】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0102】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【符号の説明】
【0103】
100:ウェブシェル探知システム
110:ウェブサービス提供サーバ
120:ウェブシェル
130:管理者
図1
図2
図3
図4
図5