エンタングルメントosugi3yのブログ

14年勤めた企業をやめました。映画「時の行路」尾道市実行委員

攻撃者による一般的でないプログラミング言語の使用は増加の一途をたどっている〜シン・すべてがNになる〜

攻撃者による一般的でないプログラミング言語の使用は増加の一途をたどっている

 攻撃者は、検出を回避したり、開発プロセスを効率化したりするために、Go、D、Nim、Rustなどの一般的でない言語を使用します。

                 

f:id:osugi3y:20210727104222p:plain

ケリー・シェリダン
シニアエディター

 

 

f:id:osugi3y:20210727104559p:plain

Go programming language Sergej Kukshaus via Adobe Stock

 BlackBerry社の研究者によると、Go、Rust、Nim、DLangなどの一般的ではないプログラミング言語が、セキュリティ防御を回避したり、開発プロセスの弱点を突いたりすることを目的としたマルウェア作者の間で人気を集めているとのことです。

 研究チームは、悪意のある目的で使用されるケースが増加していることや、これらの言語を使用するマルウェアファミリーの数が増加していることに注目し、これら4つの言語を選びました。攻撃者が新しいプログラミング言語を使用することは新しいことではありませんが、研究者たちは、これらの言語がより発展してきており、この傾向が続くと使用が増加すると予想しています。

 新しいプログラミング言語を採用する理由はいくつかあります。既存の言語の弱点を補ったり、よりシンプルな構文、より効率的なメモリ管理、パフォーマンスの向上などが考えられます。また、新しい言語がその環境に適している場合もあります。例えば、Internet of Things(モノのインターネット)機器では低レベルの言語が使用されています。

blogs.blackberry.com

 

 攻撃者がこのようなメリットを求める一方で、防御側には課題があります。マルウェア解析ツールは、あまり知られていない言語をサポートしているとは限らず、Go、Rust、Nim、DLangなどで書かれたバイナリは、CやC++などの伝統的な言語に比べて、分解すると複雑に見えることがあります。アナリストは新しい言語に慣れていないこともあり、その複雑さを学ぶには学習曲線が必要になることもあります。

 C++C#などの伝統的な言語で書かれた古いマルウェアが、比較的一般的でない言語で書かれたドロッパーやローダーで刷新される傾向が強まっていると研究者は指摘しています。古いマルウェアは通常、第一段階内では暗号化された状態で保存され、XOR、RC4、AESなどの暗号化・符号化の方法が用いられるという。

 解読された後、バイナリはディスクに落とされるか、実行中のプロセスに注入されてメモリにロードされると研究者は述べています。これは、マルウェアを再コーディングする手間が省けるため、攻撃者にとって魅力的であると指摘しています。攻撃者にとっては、マルウェアを再コード化する手間が省けるため、魅力的だといいます。

 

 シグネチャベースのセキュリティツールでは、よく知られたマルウェアを使用したドロッパーやローダーの第2段階(ディスクにドロップした場合やメモリにロードした場合)を捕捉できる可能性があります。しかし、マルウェアを別の言語で書き換えると、既存のシグネチャが機能しない可能性が高いため、防御を回避できる可能性があります。

 BlackBerry社によれば、Go、Rush、Nim、DLangで書かれた注目すべきマルウェアも存在しますが、発生は稀であり、そのほとんどはGoで書かれています。これらの比較的珍しい言語は、いずれもその背後にいる開発者にメリットをもたらします。

 2007年にGoogleによって開発されたGoは、C言語ファミリーに属していますが、よりシンプルな構文を持っています。すべての主要なオペレーティングシステムにクロスコンパイルでき、AndroidJavaScript、WebAssemblyにも対応しています。Nimは、C、C++JavaScriptなどの複数の言語にコンパイルできます。DLangは、C言語の構文を改良したもので、クロスコンパイルが可能で、研究者によると習得が容易であるとのことです。Rustは、オーバーヘッドが少なく、パフォーマンスが効率的で、他の一般的な言語に見られる「ペインポイント」を回避するのに役立つとしている。

攻撃側がギアを変えると、防御側もそれに従う

 

 研究者が指摘するように、一般的でない言語を採用しているのはマルウェア作者だけではありません。近年では、セキュリティコミュニティもレッドチームツールの実装に攻撃的に使用するためにこれらの言語を採用しており、その多くはオープンソースで公開されていると研究者は指摘しています。

 この報告書では、昨年発生したFireEye社の不正アクセス事件で、国家レベルの攻撃者がセキュリティ企業からレッドチームのツールを盗んだことを指摘しています。これを受けて、FireEye社は、盗まれたツールを特定するための検出シグネチャを含む声明とGitHubリポジトリを公開しました。そのリポジトリによると、FireEye社のレッドチームは、一般に公開されているツールと、Go、DLang、Rustなどの複数の異なる言語で書かれた自社製のツールを組み合わせて使用していたことが判明したとのことです。

 

 例えば Go は、BlackBerry のリストの中では最も新しいものですが、レッドチームによって広く採用されており、多くの攻撃的なセキュリティツールが Go 用に書き換えられたり、専用に作られたりしています。FireEyeのレッドチームによるツールでは、マルチプラットフォームのGoリモートアクセストロイの木馬(RAT)を作成したことが明らかになっています。この言語は、Bishop Fox社の敵対者エミュレーションツールであるSilverにも搭載されています。人気の高いC2フレームワークであるMerlinは、ネイティブにクロスプラットフォームであることを目的として、すべてGoで書かれています。

 研究者たちは、大手セキュリティ企業からの「サムズアップ」は、あるプログラミング言語や技術が主流になる準備が整っていることを意味すると指摘しています。また、解析ツールや技術は、"新しい言語で書かれたマルウェアがある程度飽和状態になる "まで、セキュリティ業界では開発されないことが多いと指摘しています。

 このように、あまり知られていない言語で書かれたマルウェアは、一般的で成熟した言語で書かれたものと同じ割合で検出されないのが普通だと研究者は指摘する。現時点では、攻撃者は感染プロセスの最初の段階を変更しているだけであり、キャンペーンの中核をなすものではありませんが、セキュリティチームは、これらのあまり知られていない言語のリスクと、それがどのように防御に影響するかについて話し合うことが重要です。

 

www.DeepL.com/Translator(無料版)で翻訳しました。

f:id:osugi3y:20210703185311p:plain