웹페이지 변조와 웹서버 해킹의 주범인 웹쉘(webshell)의 사례와 분석 (ASP 웹쉘)

해킹 공격 중에 DOS(혹은 DDOS) 다음으로 많이 발생하는(어쩌면 반대일 수도) 공격이 바로 웹쉘을 통한 웹서버 공격입니다. 해커들이 웹서버를 공격할 때 가장 즐겨 사용하는 공격도구이자 취약점이 바로 웹쉘입니다.

웹쉘은 Unix/Linux는 물론 Windows 서버까지 운영체제를 가리지 않고 존재합니다. 또한 JSP, ASP 등 웹서버에서 구동되는 언어 또한 가라지 않고 다양한 웹쉘이 존재합니다. 게다가 파일탐색기, 파일업로드, 파일의 생성/수정/삭제는 물론 서버 내의 명령어 실행까지 가능한 토탈패키지 형태의 웹쉘도 존재하고 기존의 운영중인 웹페이지의 소스에 한 두줄을 추가(변조)하여 해커가 원하는 한 가지 기능만 수행하도록 하는 탐지가 거의 불가능한 웹쉘도 존재합니다.

하지만 웹쉘의 공통적인 기능은 “웹서버 대몬 서비스를 통해 서버내에서 명령(명령어 혹은 파일수정 등)을 실행한다”는 것입니다.

윈도 서버에서 동작하는 웹쉘을 하나 선정하여 살펴보도록 하겠습니다.

아래 화면은 해커에 의해 업로드 된 웹쉘을 웹브라우저에서 호출한 화면입니다.

웹페이지 변조와 웹서버 해킹의 주범인 웹쉘(webshell)의 사례와 분석 (ASP 웹쉘)

이 웹쉘은 SQL인젝션, 파일업로드, 리버스텔넷, 탐색기 기능을 갖춘 토탈패키지형 웹쉘입니다. 물론 꽤나 오래된 웹쉘이라 일부 기능은 테스트한 윈도2008 서버에서는 동작하지 않는 기능도 있습니다만… 해커가 필요로 하는 명령어 실행 기능은 매우 잘 동작합니다.

웹페이지 변조와 웹서버 해킹의 주범인 웹쉘(webshell)의 사례와 분석 (ASP 웹쉘)

웹쉘을 통해 서버의 IP 및 네트워크 정보를 확인하기 위해 ipconfig 명령을 실행한 화면입니다.

웹쉘을 통해 서버내의 명령을 실행하는 것은 앞의 포스트에서 여러차례 언급했 듯 서버보안SW인 RedCastle을 통해 완벽하게 차단할 수 있습니다.

(관련 글 목록 보기)   /  웹쉘을 통한 웹페이지 변조 및 차단 방안 보러가기

이 웹쉘이 어떻게 동작하는지는 위반로그(차단로그)를 확인하면 알 수 있습니다.

웹페이지 변조와 웹서버 해킹의 주범인 웹쉘(webshell)의 사례와 분석 (ASP 웹쉘)

웹쉘이 RedCastle의 정책에 의해 차단되면 “Execute violation” 위반이 발생합니다. 누군가가 cmd.exe를 실행한 것입니다.

아랫부분의 주체정보의 프로세스를 보면 “w3wp.exe”가 주체이고 객체정보의 프로세스는 “cmd.exe”인 것을 알 수 있습니다. 즉 w3wp.exe(IIS웹서버 대몬)가 cmd.exe를 실행한 것입니다. 아마도 이 웹쉘은 아래 화면처럼 cmd.exe에게 ipconfig.exe를 실행하도록 할 것입니다.

웹페이지 변조와 웹서버 해킹의 주범인 웹쉘(webshell)의 사례와 분석 (ASP 웹쉘)

대부분의 웹쉘은 위 화면과 같이 cmd.exe 명령어 뒤에 /C와 같은 옵션을 주고 최종적으로 실행할 명령어를 포함하는 명령문을 만들어 웹서버(w3wp.exe)를 통해 실행합니다. 때문에 IIS 웹서버 대몬인 w3wp.exe가 cmd.exe를 읽거나 실행하지 못하도록 하면 웹서버에 업로드 된 웹쉘이 운영체제의 명령어를 실행하는 것을 완벽하게 차단할 수 있습니다.

이 웹쉘의 소스를 살펴보면 아래와 같이 cmd.exe에 실행할 명령을 조합하여 전달하는 것을 알 수 있습니다.

DIM prompt
prompt = Server.mappath(“.”)
Set CMD=Server.CreateObject(“Wscript.Shell”)
Set FP=Server.CreateObject(“Scripting.FileSystemObject”)IF command <> “” Then
Tempfile=prompt & “\” & FP.GetTempName()
On Error Resume Next
Call CMD.Run (“cmd.exe /c ” & command &” > ” & Tempfile & ” 2> ” & Tempfile & “err”, 0, True)

이 웹쉘에서는 CMD라는 wscript 객체를 만들고 run이라는 메소드를 이용해 실행할 명령을 전달하였지만 이외에도 웹서버 대몬을 통해 명령어를 실행하는 방법은 매우 다양하기 때문에 네트워크 수준에서 HTTP 프로토콜을 통해 웹브라우저와 웹서버간에 오가는 웹쉘의 트래픽을 분석하여 차단하는 것은 현실적으로 거의 불가능합니다.

그렇기 때문에 웹쉘을 효과적으로 차단하기 위해서는 서버내에서 웹서버 대몬이 운영체제의 영역에 접근하는 것을 차단하는 것이 가장 확실한 방법입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top