국내 침해 사고 보도에 웹셸이라는 말이 자주 나옵니다. 여의도순복음교회 사고도, 9월 금융보안원이 밝힌 AI 에이전트 공격도 웹셸 설치를 거쳤어요.
웹 서버 안쪽에 숨은 통로를 표현한 개념 컷 — 출처: 개념 컷 · agy 자가 생성
웹셸의 정의
웹셸(web shell)은 공격자가 웹 서버에 업로드하는 스크립트 파일이에요. 홈페이지를 만드는 언어(PHP·JSP·ASP 등)로 작성돼 있어서, 서버는 이 파일을 다른 웹 페이지와 똑같이 실행합니다. 공격자는 브라우저로 그 파일 주소에 요청을 보내는 것만으로 서버에서 명령을 실행할 수 있게 돼요.
미국 국가안보국(NSA)과 호주 신호국(ASD)은 2020년 4월 공동 가이드에서 웹셸을 피해자의 웹 서버에 설치돼 임의의 시스템 명령을 실행하는 악성코드로 정의했습니다.
[일반 웹 페이지] 방문자에게 정해진 화면과 기능만 제공
[웹셸] 겉보기엔 같은 웹 파일이지만 서버 명령 실행 수단이 됨
웹셸 설치 조건
웹셸은 자체적으로 서버에 설치되지 않습니다. 공격자가 웹 폴더에 파일을 쓸 수 있는 취약점이나 권한이 먼저 있어야 해요.
| 전제 조건 | 예 |
|---|---|
| 파일 업로드 검증 부족 | 이미지 대신 스크립트 허용 |
| 패치하지 않은 취약점 | 웹 서버·CMS·플러그인 |
| 탈취된 관리자 계정 | 관리 페이지 업로드 |
| 웹 폴더 쓰기 권한 | 웹 서버 계정이 쓰기 가능 |
웹셸이 위험한 이유
Microsoft 웹셸 월평균 탐지 건수 차트 — 출처: Microsoft 발표 기반 자가 렌더
Microsoft는 2020년 8월부터 2021년 1월까지 서버에서 웹셸을 월평균 14만 건 탐지했고, 이는 1년 전 7만 7,000건의 두 배 가까운 수치라고 밝혔어요.
[오래 남는다] 서버 재부팅이나 계정 비밀번호 변경 뒤에도 파일이 남아 있으면 다시 접속 가능
[정상 트래픽과 구분하기 어렵다] 일반 웹 요청과 같은 포트·형식이라 방화벽을 그대로 통과
[내부망 침투 경로가 된다] 웹 서버가 접근할 수 있는 DB·ERP·사내 시스템으로 이어지는 침투 경로
교회 사고에서도 공격자는 웹셸로 ERP 서버에 침입한 뒤 데이터베이스 관리자 권한을 얻은 것으로 분석됐습니다. 금융보안원이 9월 공개한 사례에서는 공격자가 AI 에이전트에 국내외 금융사 약 300곳의 Oracle WebLogic 서버를 점검하게 하고 웹셸 설치까지 지시했는데, 금융보안원이 다음 단계 전에 탐지해 차단했어요.
앞선 교회 해킹 글에서 이 경로가 어떻게 교인 정보 유출로 이어졌는지 정리했습니다.
여의도순복음·사랑의교회 해킹 — 교인정보 약 105만 건 유출 정황
예방 방법
NSA·ASD 가이드의 예방 권고는 웹셸 설치 경로와 설치 뒤 가능한 권한을 함께 제한하는 방식이에요.
| 권고 | 줄이는 위험 |
|---|---|
| 웹 애플리케이션 패치 | 알려진 취약점 경유 |
| 웹 폴더 쓰기 권한 제거 | 파일 설치 자체 |
| 업로드 확장자 허용 목록 | 스크립트 업로드 |
| 업로드 폴더 실행 금지 | 업로드된 파일 실행 |
| 웹 방화벽(WAF) | 알려진 공격 요청 |
| 내부망 분리 | DB·사내 시스템 확산 |
가이드는 웹 폴더 권한을 제한하는 것을 가장 효과가 큰 조치로 설명했어요. 웹 서버 계정이 웹 폴더에 파일을 쓸 수 없으면, 취약점이 있어도 웹셸 파일을 설치하기 어렵습니다. 권한을 바꾸기 어려운 환경이라면 파일 무결성 감시로 웹 폴더의 변화를 막거나 알림을 받는 방식이 비슷한 효과를 낸다고 적었어요.
웹 서버를 DB·ERP와 같은 망에 두면 웹셸 하나가 내부 시스템으로 접근하는 경로가 됩니다. 웹 서버가 꼭 필요한 내부 주소에만 접근하도록 네트워크를 분리하면, 웹셸이 설치돼도 접근할 수 있는 범위가 줄어들어요.
탐지 방법
NSA·ASD 가이드는 가장 좋은 탐지법으로 정상본 비교를 제시했습니다. 검증된 원본 웹 애플리케이션과 운영 중인 서버 파일을 비교해, 원본에 없는 파일이나 바뀐 파일을 사람이 확인하는 방식이에요.
| 방법 | 검사 대상 |
|---|---|
| 정상본 비교 | 원본에 없는 파일 |
| 파일 무결성 감시 | 웹 폴더의 새 파일·변경 |
| 웹 로그 분석 | 드물게 호출되는 새 경로 |
| 네트워크 감시 | 서버발 낯선 외부 연결 |
| 서버 보안 제품(EDR) | 웹 서버가 실행한 프로세스 |
가이드는 의심 서버의 파일 시간 정보를 믿지 말라고도 경고했어요. 공격자가 파일의 생성·수정 시각을 바꿔 원래 있던 파일처럼 위장하는 경우가 있어서입니다. 웹셸은 이미지 같은 실행되지 않는 형식의 파일에 숨기도 해서, 확장자만 보고 차단할 수도 없어요.
발견했을 때
웹셸 파일만 삭제하면 침입 경로가 그대로 남습니다. 서버를 망에서 분리하고, 지우기 전에 파일과 웹 로그를 보관해 침입 시점과 경로를 확인해야 해요. 그 서버에서 쓰던 계정 비밀번호와 DB 접속 정보도 바꾸고, 같은 웹 폴더에 다른 파일이 더 없는지 정상본과 다시 비교합니다. 개인정보가 저장된 시스템이었다면 개인정보보호위원회와 KISA에 신고할 의무가 있는지도 확인해야 합니다.
국내 지원 도구
한국인터넷진흥원 로고 — 출처: KISA
KISA는 서버 관리자가 웹셸 파일과 악성코드 은닉 사이트를 탐지하도록 돕는 탐지 프로그램 휘슬(WHISTL)을 무료로 배포합니다. 대상은 중소기업기본법상 중소기업이고, 개인·정부기관·공공기관은 쓸 수 없어요. KISA 보안 도구 사이트에서 신청할 수 있습니다. 같은 사이트에서 중소기업 홈페이지 원격 취약점 점검도 무료로 신청할 수 있어요.
🔗 링크 첨부 - https://toolbox.krcert.or.kr
휘슬은 이미 설치된 웹셸을 탐지하는 도구이고 홈페이지 해킹 자체를 방지하지는 않습니다. 침해가 의심되면 KISA 118 상담센터나 보호나라로 신고할 수 있어요.
운영자 점검 항목
웹셸 예방·탐지 정리 카드 — 출처: NSA·ASD 가이드 기반 자가 렌더
일반 이용자가 방문한 홈페이지에 웹셸이 있는지 확인할 방법은 없습니다. 이용자가 할 수 있는 것은 유출 통지를 받았을 때 비밀번호를 바꾸고, 같은 비밀번호를 쓴 다른 서비스도 바꾸는 것이에요.