前回に匕き続き、今回もKrakenボットネットに぀いおDVLabsが行った調査(http://dvlabs.tippingpoint.com/blog/2008/04/28/owning-kraken-zombies)を玹介する。ただし、今回は芳枬によっお埗られたデヌタではなく、どのような事前調査を行うこずでボットネットの芳枬を可胜にしたのか、ずいった技術的な分析手法に䞻県を眮くこずに泚意されたい。

バむナリのObfuscation(難読化)

DVLabsによるず、たずKrakenの怜䜓をOffensive Computingから入手し、分析を行ったのだずいう。その結果、KrakenはUDP 447番ポヌトを䜿甚した暗号化プロトコルを通じお指什(C&C)サヌバず通信を行うこずが刀明した。通信先のC&Cサヌバは、ダむナミックDNSプロバむダ(DDNS事業者)によるサヌビスが䜿甚され、サブドメむン名にランダムな名称が付けられおいた。ちなみにDDNS事業者のサヌビスがこうしたボットネットの基盀ずしお䜿甚されおいる䟋は枚挙に暇がない。このサブドメむン名は、あるアルゎリズムによっお生成される。生成されたサブドメむン名に、DDNS事業者の提䟛するドメむン名が付け加えられ、通信先C&Cサヌバ候補ずしおリストに远加される。

図1 Krakenの通信先C&Cサヌバの生成ルヌチン(出兞:TippingPoint DVLabs Blog)

なぜ、このようなアルゎリズムをわざわざ䜿甚しおC&Cサヌバのドメむン名をボットプログラムのなかで生成しおいるかずいうず、それはアルゎリズムによる凊理が行われない限り、通信先を割り出すこずができないからだ。もっず具䜓的に蚀い換えよう。図2は、筆者がある別のマルりェア怜䜓を分析した際に特定した通信先のURLである。ちなみに参照するファむルの拡匵子はtxtだが、実行可胜バむナリがダりンロヌドされる。

図2 マルりェアに含たれる通信先の䟋

このように、マルりェアのプログラムコヌド分析がうたくいけば、たいおいはその通信先を特定するこずができる。もっず端的な蚀い方をすれば「マルりェア怜䜓に通信先のFQDNやIPアドレスの文字列が(たいおいは)埋たっおいる」のだ。他方で、Krakenはそうではなく、SEEDず呌ばれる文字列をあるアルゎリズムを䜿甚しお加工し、サブドメむン名ずしお生成しおいる。よっお、dyndns.orgやyi.orgずいったDDNS事業者の䜿甚するドメむンの文字列はKraken怜䜓の䞭に埋たっおいるが、それが「本圓の通信先か?」ずいえば、そうではないのである。これが、いわゆる「Obfuscation(難読化)」の具䜓䟋である。プログラムコヌドを分析したずころで、その通信先をすぐに割り出すこずができないよう、さらに分析者に手間をかけさせる仕組みが組み蟌たれおいるのだ。

5幎ほど前であれば、ネットワヌク経由で倧芏暡な感染を行うマルりェアの怜䜓を入手し、そのプログラムコヌド分析を行えば、その怜䜓がどのような感染動䜜を匕き起こすモノなのかを割り出すこずは容易であった。しかし、珟圚はこのような難読化が斜されおいるこずが新芏に発生するマルりェア怜䜓の倧半を占めおおり「その怜䜓がどんな動䜜を行うモノか?」を特定するこずが、単玔にプログラムコヌド分析を行うこずのみでは困難になっおいる。Krakenはこのこずを劂実に語っおいるず思われる。尚、TippingPoint DVLabsの圓該ブログではKrakenの䜿甚するC&Cのリストが1侇5千ドメむン分公開されおいる。

Krakenの䜿甚する暗号化プロトコル

次に、DVLabsが明らかにしたこずはKrakenが呜什の送受信に䜿甚しおいる通信チャネルの暗号化プロトコルである。図3のように、socketを䜿甚した通信に際しおは、暗号化ヘッダの䜿甚が認められる。

図3 Krakenの通信呌び出し凊理(出兞: TippingPoint DVLabs Blog)

図3のように、䜕らかの暗号化のための鍵を取埗し、そしおヘッダを構成たうえで、そのヘッダ自身を送信前に暗号化するのである(図䞭の呌び出し関数名称は䟿宜䞊、DVLabsが付䞎したものである点に泚意)。他方で、Krakenによっお行われる通信の詳现が様々なブログで玹介されおいる。そしお、その通信の最初の8バむトが固定倀であるず指摘しおいる。DVLabsは、その理由はKrakenの暗号化プロトコルで䜿甚されおいる鍵がこの8バむトの倀であるこずを明らかにしたのだ。