해커들은 피해자 PC에 초기 침투하기 위해 ▲어플리케이션 취약점 공격 ▲악성메일 ▲웹사이트에 특정 페이지에 악성코드를 심어두는 '워터링홀' 등 잘 알려진 공격기법을 주로 활용한 것으로 나타났다.해커들은 피해자 PC에 초기 침투하기 위해 ▲어플리케이션 취약점 공격 ▲악성메일 ▲웹사이트에 특정 페이지에 악성코드를 심어두는 '워터링홀' 등 잘 알려진 공격기법을 주로 활용한다.
그 중 가장 많이 이용한 것은 '어플리케이션 취약점' 공격이다. MS익스체인지·오라클 웹로직·아파치 등 응용 소프트웨어의 보안 정책에서의 결함이나 시스템 개발에서의 눈에 띄지 않는 취약점을 공격하는 방법이다.
그 중 가장 많이 이용한 것은 '어플리케이션 취약점' 공격이다. MS익스체인지·오라클 웹로직·아파치 등 응용 소프트웨어의 보안 정책에서의 결함이나 시스템 개발에서의 눈에 띄지 않는 취약점을 공격하는 방법이다.
현재는 널리 사용하고 있어 그만큼 보안이 중요 하지만 Tomcat의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령, 스크립트, 프로그램 또는 특정한 데이터 조각을 사용한 공격 행위를 이르기도 한다.
이러한 취약점 공격(Exploit) 원인은 Tomcat의 디폴트 설정에 영향을 주며, 따라서 많은 서버들이 현재 취약점에 노출되어 있을 가능성이 높다. 사용자들이 디폴트 설정을 잘 바꾸지 않기 때문이다. 이 말은 많은 서버들이 현재 인터넷에 노출되어 있을 수 있다는 뜻이다.
최근에는 Tomcat의 취약점을 노린 공격이 증가하고 있다. 공격자가 취약점을 악용하여 취약한 서버에서 악성코드를 실행하고 제어권을 얻을 수 있다.
이런 취약점을 방치해둔 상태로 운영하게 된다면 취약점을 공격해 악성코드를 실행하여 악성코드 유포 및 운영 서버에 손상이 가해지거나 데이터가 약탈되는 등 다양한 취약점을 악용하는 사례가 늘어나고 있다.
예) 관리자 콘솔 취약점
- Tomcat은 Web 환경의 관리자 콘솔을 제공함. - 관리자 콘솔이 외부로부터 침해되는 경우 Web에 관련된 모든 권한을 누출할 수 있으므로 관리에 주의해야 함. - 관리자 인증을 위한 페이지가 쉽게 인지 가능하거나 유추로 인해 접근 되어지는 경우에는 취약함. - 관리자 인증 시 사용하는 Username/Password가 암호화 되지 않은 원문(평문)으로 저장 (tomcat-users.xml) 되어 있어서 보안에 취약함. |
예) tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0">
<role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager-gui"/> <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/>
</tomcat-users> |
Tomcat 관리자 콘솔의 로그인 시 사용하는 Username/Password는 "tomcat-users.xml" 파일에 암호화 되지 않는 원문인 평문으로 저장되어 있어서 보안에 그만큼 취약하다.
일회용 인증키 생성 주기가 30초 이면 30초 마다 일회용 인증키가 바뀌기 때문에 고정된 비밀번호와 결합하면 일회용 인증키 생성 주기 마다 새로운 비밀번호가 생성되기 때문에 고전적 방법인 주기적으로 Tomcat 관리자 콘솔의 비밀번호를 바꿀 필요가 없게 된다.
만약, 2-factor 인증 솔루션이 적용되어 있다면 비밀번호 입력란에 고정된 비밀번호만 입력하는 경우 Tomcat 관리자 콘솔에 로그인을 할 수 없게 된다.
Tomcat 콘솔 로그인 화면에서 비밀번호를 먼저 입력하고 공백 없이 이어서 일회용 인증키를 입력해야 한다. 예를 들어, 비밀번호가 "tomcat" 이고, 일회용 인증키가 "195921" 이라면 "tomcat195921"으로 입력한다.
설령, Tomcat 콘솔 로그인 정보인 Username/Password가 유출 되어도 일회용 인증키 생성 주기가 30초 이면 30초 마다 일회용 인증키가 바뀌기 때문에 고정된 비밀번호와 결합하면 일회용 인증키 생성 주기 마다 새로운 비밀번호가 생성되기 때문에 고전적 방법인 주기적으로 Tomcat 관리자 콘솔의 비밀번호를 바꿀 필요가 없게 된다.
만약, 2-factor 인증 솔루션이 적용되어 있다면 비밀번호 입력란에 고정된 비밀번호만 입력하는 경우 비밀번호 뒤에 덧붙인 일회용 인증키를 유추할 수 없어서 Tomcat 관리자 콘솔에 로그인을 할 수 없게 된다.