0

私はこの問題を抱えています:

私のサイトのさまざまなページ(通常:html、php、js)は、トロイの木馬(NOD32スキャンに基づくJS / Kryptik.ADZ)の影響を受けます。

各タイプのページのコードは次のようになります。

PHP:

#336988#
echo "<script type=\"text/javascript\" language=\"javascript\" > CODE OF MALWARE </script>";
#/336988#

JS:

/*336988*/
CODE OF MALWARE
/*/336988*/

HTML:

<!--336988-->
<script type="text/javascript" language="javascript" >CODE OF MALWARE</script>
<!--/336988-->

だから私はNotepad++と正規表現を使ってマルウェアを空白のテキストに置き換えます。私の正規表現はこれです:(<!--|\#|/\*)336988.+/336988(-->|\#|\*/)

ただし、この式で検出されるのはHTMLのみです。なんで?

理解できない。

私の英語と正規表現の知識が不十分な場合は申し訳ありません。

ありがとう

カルロ

4

4 に答える 4

0

今日、私は同じ問題を抱えていましたが、コードが異なります。このコードは、aspx、asp、htdocs、html、htm、およびjsファイルに影響を与えました。これらのファイルを修正するためのPowershellのコードの下。JSファイルの場合、行を変更する必要があります。

    $regex = New-Object System.Text.RegularExpressions.Regex "<!--68c8c7-->((.|\n)*)<!--/68c8c7-->"

に:

    $regex = New-Object System.Text.RegularExpressions.Regex "/\*68c8c7\*((.|\n)*)68c8c7\*/"

とライン

    Get-ChildItem . -Recurse -Include *.aspx,*asp,*.html,*.htm | where-object {$_.lastwritetime –gt $DateToCompare} |  %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}

に:

    Get-ChildItem . -Recurse -Include *.js | where-object {$_.lastwritetime –gt $DateToCompare} |  %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}

以下のコード(このスクリプトはBackup_ *ファイルを作成します。結局、これらのファイルを削除できます):

function tryFixFile($filepath, $filepathBackup)
{   
    $infile = [string]::join([environment]::newline, (get-content -path $filepath))
    $regex = New-Object System.Text.RegularExpressions.Regex "<!--68c8c7-->((.|\n)*)<!--/68c8c7-->"

    if($regex.IsMatch($infile))
    {
        $intAnswer = $WScriptObject.popup("File needs to be change: " + $filepath + " do you want to continue?", 0,"Change File",4)
        If ($intAnswer -eq 6) 
        {
            Write-Host "  Creating backup for file: "  $filepath
            Copy-Item $filepath $filepathBackup
            $replace = $regex.Replace($infile,"")
            $replace | out-file $filepath
        } else 
        {
            $a.popup("File " + $filepath + " won't be changed.")
        }
    }
}

function DoWork($filename, $directory)
{   
    $filepath = $directory + '\' + $filename
    $filepathBackup = $directory + '\' + "Backup_" + $filename

    $WScriptObject = new-object -comobject wscript.shell

    tryFixFile $filepath $filepathBackup
}



$pathToCheck = Read-Host 'WARNING!! Path to check/change?'
if (Test-Path $pathToCheck)
{
    Set-Location $pathToCheck

    #files were affected no longer that 2 days ago, you can change this
    $DateToCompare = (Get-date).AddDays(-2)

    Get-ChildItem . -Recurse -Include *.aspx,*asp,*.html,*.htm | where-object {$_.lastwritetime –gt $DateToCompare} |  %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}
}else
{
    write-host "Path doesn't exist"
}
于 2013-02-22T17:13:38.477 に答える
0

これを試してみてください。私は同じ問題を抱えていましたが、うまくいきました。

/#336988#(.*?)#\/336988#/ism
于 2013-02-05T14:17:18.703 に答える
0

これを試してください:

'^.*336988.*[\s\S]*.*336988.*$'
于 2013-01-13T14:33:03.067 に答える
0

336988、68c8c7、8f4d8e、a59dc4 を修正するスクリプトを次に示します。

于 2013-02-22T11:31:14.857 に答える