iT邦幫忙

1

請問這是php病毒嗎,我該怎麼做?

  • 分享至 

  • xImage

請問我在公司的檔案 (公司電腦是 Win7),
用 google 雲端硬碟備份後,
在家裡要從雲端硬碟下載 (家裡電腦是 Win10),
結果出現圖片 1 中的錯誤訊息,
說有 4 個檔案遭到防毒軟體拒絕,
[下方為圖片 1]
https://ithelp.ithome.com.tw/upload/images/20190830/20076058vunXquJJK2.jpg

然後查一下防毒紀錄,出現圖片 2 中的紀錄。
[下方為圖片 2]
https://ithelp.ithome.com.tw/upload/images/20190830/20076058Tc8vag1kqV.jpg

請問:

  1. 我是中了這個 Backdoor:PHP/Remoteshell.G 的病毒嗎?
  2. 這個病毒只有存在這 4 個都叫做 Message.php 的檔案嗎?還是其他檔案其實也中毒了?
  3. 我該怎麼做,才能讓我的電腦恢復無病毒狀態呢?

謝謝

=======================================
補充
以下是出現錯誤訊息的檔案完整程式碼

=======================================

<?php
namespace system;

// 客戶端調用範例:
// \system\Message::setSuccess();
// \system\Message::setSuccess('自訂訊息');
// \system\Message::setSuccessToUrl('show.php');
// \system\Message::setSuccessToUrl('show.php', '自訂訊息');
// \system\Message::setSuccessToUrl('show.php?x=yyy&a=bbb', '自訂訊息');
// ---
// echo \system\Message::show();
class Message {
	private static $successDefaultText = '操作成功';
	private static $errorDefaultText = '操作錯誤';
	private static $html = '';

	// 如果有接收到 queryString,就動態調用 queryString 名稱的方法
	public static function show() {
		if (isset($_GET['messageMethod'])) {
			self::$_GET['messageMethod']($_GET['text']);
		}

		if (self::$html !== '') {
			return self::$html;
		}
		else {
			return;
		}
	}

	/* ==============================================================
	設定訊息
	============================================================== */
	public static function setSuccess($text=null) {
		if ($text === null) {$text = self::$successDefaultText;}
		self::set('successMessage noPrint', $text);
	}

	public static function setError($text=null) {
		if ($text === null) {$text = self::$errorDefaultText;}
		self::set('errorMessage noPrint', $text);
	}

	private static function set($cssClass, $text) {
		self::$html = "<div class='{$cssClass}'>{$text}</div>";
	}

	/* ==============================================================
	跳轉頁面後,設定訊息
	============================================================== */
	public static function setSuccessToUrl($url, $text=null) {
		if ($text === null) {$text = self::$successDefaultText;}
		self::setToUrl($url, 'setSuccess', $text);
	}

	public static function setErrorToUrl($url, $text=null) {
		if ($text === null) {$text = self::$errorDefaultText;}
		self::setToUrl($url, 'setError', $text);
	}

	// 判斷客戶端輸入的 $url 是否有帶查詢字串 (因為 $url 有可能輸入 index.php?x=yyy&a=bbb)
	// 來決定要用 ? 或 & 來連接後面的查詢字串
	private static function setToUrl($url, $method, $text) {
		$urlQueryIsExist = strpos($url, '?');
		$mark = $urlQueryIsExist ? '&' : '?';
		header("location: {$url}{$mark}messageMethod={$method}&text={$text}");
	}

	/* ==============================================================
	顯示追蹤錯誤訊息
	============================================================== */
	public static function showExceptionIfLocalhost(\Exception $e) {
		if (IS_LOCALHOST) {
			zzzhr('拋出異常的文件:', $e->getFile());
			zzzhr('拋出異常的位置:', $e->getLine());
			zzzhr('異常訊息:', $e->getMessage());
			zzzhr('追蹤:', $e->getTrace());
		}
	}
}

// 程式碼到此結束,不加入 PHP 結束標籤
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
dragonH
iT邦超人 5 級 ‧ 2019-08-30 10:34:14
最佳解答

微軟的說明

我是中了這個 Backdoor:PHP/Remoteshell.G 的病毒嗎?

應該沒錯

這個病毒只有存在這 4 個都叫做 Message.php 的檔案嗎?還是其他檔案其實也中毒了?

你可以找個安全的電腦(斷網

或者直接用文字編輯器打開

用文字編輯器打開

應該不至於會執行 php code

看你那些 php code 是不是有被竄改

理論上有這種情況

你應該要檢查所有在專案裡的 file

我該怎麼做,才能讓我的電腦恢復無病毒狀態呢?

他應該只是在你的專案掛後門

然後你在 run 這網站時

他可以透過這 php file

在你的 server 搞事

不過還是建議執行完整掃描

例子參考

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2019-08-30 11:05:17 檢舉

年輕時不懂事,把phpmyadmin放在公網,然後就被植入shell...

dragonH iT邦超人 5 級 ‧ 2019-08-30 11:19:04 檢舉

災難的開始XD/images/emoticon/emoticon02.gif

小魚 iT邦大師 1 級 ‧ 2019-08-30 13:14:23 檢舉

原來是這樣.

samjam iT邦新手 3 級 ‧ 2019-08-30 14:12:15 檢舉

謝謝 dragonH 大大:

  1. 早上在家裡是用 win10 的防毒軟體 Windows Defender 顯示有 Backdoor:PHP/Remoteshell.G 病毒,
    而剛剛用公司電腦的防毒軟體 PC-cillin 掃描卻沒有發現問題,是 PC-cillin 查不出來此病毒嗎?
  2. 我檢查了我出現錯誤訊息的 4 個檔案,裡面都沒有被改。
  3. 您提供的例子說要搜尋 eval($,我搜尋後沒有,另外搜尋 eval( 有出現在 jquery 官方檔案的程式碼。

我想今天試試看:
我在公司把這 4 個資料夾內的錯誤訊息檔案刪掉後,
再把資料夾重新備份到雲端硬碟,
然後今天回家下載看看會不會再出現錯誤訊息。

dragonH iT邦超人 5 級 ‧ 2019-08-30 14:48:13 檢舉

其實我也蠻訝異 win10 內建的防毒

竟然可以掃 php script

我一直以為這類的 script

在防毒面前只是普通的文字

不過我也沒有讓我的防毒遇過這種 script 就是

難怪 windows defender 排名可以超過幾個常見的防毒

av-test 排名

不過 Backdoor:PHP/Remoteshell.G

的資訊有點少

也不能排除有誤判的可能就是

wwx iT邦好手 1 級 ‧ 2019-08-31 10:37:42 檢舉

把檔案用日期排序很快就知道哪些檔案有問題了

samjam iT邦新手 3 級 ‧ 2019-09-03 10:41:21 檢舉

我做了幾次測試:

  1. 我刪除資料夾內有錯誤訊息的檔案Message.php後,
    再上傳資料夾,就沒有出現錯誤了,
    我猜想這表示病毒可能是在Message.php內,

  2. 為了再確認一次,
    我單獨只上傳Message.php這個檔案,
    沒有上傳資料夾,
    結果就又出現錯誤訊息,
    所以我認為病毒非常可能是在Message.php內,
    與資料夾內的其他檔案無關。

  3. 我重新開一個完全空白的檔案,完全沒有程式碼,
    取名為Message.php後上傳,
    就沒有錯誤訊息了,
    我認為病毒一定是在Message.php內。

  4. 我把原本的程式碼貼到這新的空白Message.php後上傳,
    就又出現錯誤訊息,
    難道這表示是我的程式碼有問題嗎?
    可是之前上傳都沒事,
    怎麼可能突然我得程式碼就變成病毒了。

請問我接下來要怎麼做呢?

dragonH iT邦超人 5 級 ‧ 2019-09-03 10:45:35 檢舉

如果不方便貼 code

那就只能試著看懂它

如果是想知道哪一段有問題

就一段一段試吧

samjam iT邦新手 3 級 ‧ 2019-09-03 11:34:27 檢舉

謝謝 dragonH 大大:
我有把出現錯誤訊息的檔案完整程式碼貼在上面,
都沒有被竄改的地方,
而且這個檔案幾個月都沒有動過了,
幾個月上傳下載都沒問題,
但前幾天上傳卻突然出現錯誤。

dragonH iT邦超人 5 級 ‧ 2019-09-03 11:48:03 檢舉

線上掃毒參考

結果很有趣/images/emoticon/emoticon01.gif

只有 windows defender 掃到

可是 microsoft 有關此訊息的公告是 7/14 才出來的

所以也無法知道是誤判還是他有自己的判斷依據...

samjam iT邦新手 3 級 ‧ 2019-09-10 11:53:40 檢舉

跟 dragonH 大大報告一下這幾天測試的結果,
我先把檔案內的函數一次刪除一個後建立新檔案上傳,
發現會出現錯誤的是 show() 這個函數內的這段程式碼:

if (isset($_GET['messageMethod'])) {
	self::$_GET['messageMethod']($_GET['text']);
}

我今天早上把它改成下面這樣,
然後到您給我的 VirusTotal 網站內測試,
結果是沒問題囉,
終於解決了,很開心,
謝謝 dragonH 大大。

if (isset($_GET['messageMethod'])) {
	$messageMethod 	= $_GET['messageMethod'];
	$text 			= $_GET['text'];
	self::$messageMethod($text);
}
samjam iT邦新手 3 級 ‧ 2019-09-10 11:55:28 檢舉

後來又好奇測試了一下,
改成下面這樣,會出現如圖中的錯誤訊息:

if (isset($_GET['messageMethod'])) {
	echo 'aaa';
}

https://ithelp.ithome.com.tw/upload/images/20190910/20076058EVIbNlfTDG.jpg

但下面這樣將字串改成雙引號就又正常了,
還蠻奇怪的,
會不會是 windows defender 有點問題?

if (isset($_GET['messageMethod'])) {
	echo "aaa";
}
dragonH iT邦超人 5 級 ‧ 2019-09-10 13:07:35 檢舉

會不會是 windows defender 有點問題?

也是有可能的

畢竟到現在也還是只有他有這問題

samjam iT邦新手 3 級 ‧ 2019-09-12 16:19:25 檢舉

謝謝 dragonH 大大的熱心回答

dragonH iT邦超人 5 級 ‧ 2019-09-12 16:30:17 檢舉

/images/emoticon/emoticon82.gif

0
小魚
iT邦大師 1 級 ‧ 2019-08-30 09:58:38

如果那是公司專案,
而且裡面確實沒有問題,
那應該是防毒軟體的問題,
防毒軟體總是會刪了很多我們要的檔案...

samjam iT邦新手 3 級 ‧ 2019-09-12 16:17:44 檢舉

已經解決囉,謝謝小魚大大

0
舜~
iT邦高手 1 級 ‧ 2019-08-30 10:21:35

有一種病毒他的特性是附加在檔案的最後方隱藏區域(名稱忘了,好像磁區是NTFS格式特有?)
這種病毒會透過這個特性隱藏自身的存在,特性是檔案大小會變大(也許只是放置要執行的病毒位置而增加的大小不多)

這類病毒通常會感染執行檔、批次檔,在執行的時候就會一並觸發病毒~
不過php....對網頁伺服器而言算是批次檔還是執行檔??

samjam iT邦新手 3 級 ‧ 2019-09-12 16:18:05 檢舉

已經解決囉,謝謝舜~大大

1
mayyola
iT邦研究生 1 級 ‧ 2019-08-31 19:12:31

可以看每個檔案的擁有者有無異常,或著看網頁服務的log(像iis 或apache)

dragonH iT邦超人 5 級 ‧ 2019-08-31 19:32:19 檢舉

現身說法XD

mayyola iT邦研究生 1 級 ‧ 2019-08-31 20:14:14 檢舉

之前也是中毒冏,有板上板友跟同事教學才知道..之前病毒可能是透過http傳過來,希望有幫助到XD 不然我都是一直在問問題,也不太好意思

samjam iT邦新手 3 級 ‧ 2019-09-12 16:18:28 檢舉

已經解決囉,謝謝mayyola大大

我要發表回答

立即登入回答