API

APIとは

API(アプリケーションプログラミングインタフェース)とは、プログラムの機能や管理するデータを外部から呼び出して利用するための手順やデータ形式などを定めたものです。

プログラム開発するとき、作るのが面倒や大量のデータが必要な機能があります。その時には、機能を持って公開されているAPIを使います。APIは、そこにリクエストを送るだけで結果を返してくれるようになっています。

APIは、「他のアプリの機能に処理を任せる」ために使われるため、環境によってさまざまなAPIが存在します。例えば、Windowsコンピュータではファイルを生成したり、インターネットに接続するためのAPIが提供されており、Windows APIと呼ばれます。一方で、Google Mapを自社サイトに表示したいなどWeb通信で利用されるAPIについてはWeb APIという形で呼ばれます。

OWASPには、APIコントロールを含むEnterprise Security API Toolkitsプロジェクトがあります。

API hashing

API hashingとは、昨今のマルウェアでよく利用される方法の一つで、マルウェア内からAPIを呼び出す際にAPI名そのものをコード内に記載しない方法です。

通常であれば、静的にコード内に実行したいAPI名を記載します。しかしこれでは、コードの挙動をセキュリティソフトのパターン検知で排除されてしまうかもしれません。

そこで、実行可能なAPI一覧をシステムDLLなどからダウンロードし、コード内のAPIのハッシュ値と一致するものを実行します。実際に、コード内にはハッシュの値しかなく、どのAPIを利用するのかを判断するのかはパターン検知ではできません。

対策としては、「HashDB」を利用してどのようなハッシュ値を使っているのか、元のハッシュ値は何かを調べることです。ただ、パスワードハッシュサルトが使われるように、万能な方法とまでは言えない。