4일 전

공격자가 호스팅 서비스를 악용하는 방법에서 관리자가 알아야 할 것

David Balaban | CSO
경험이 풍부한 IT 전문가는 주로 순진한 일반 사용자를 속여 수익을 얻는 온라인 사기꾼에게 당하는 일이 거의 없을 것 같다. 그러나 사이버 공격자 가운데 상당수는 가상 서버 관리자와 이들이 관리하는 서비스를 노린다. 관리자가 알고 있어야 할 사기와 악용 방법에 대해 알아보자.
 
ⓒ Getty Images Bank


표적화된 피싱 이메일

모닝 커피를 마시면서 노트북을 열고 이메일 클라이언트를 실행한다. 일상적인 메시지 가운데서 호스팅 업체가 보낸 호스팅 요금 결제 할인을 알리는 이메일이 눈에 띈다. 연말연시라서, 또는 다른 이유로 지금 결제하면 대폭 할인을 해준다는 내용이다.

이메일의 링크를 클릭해 들어간다. 운이 좋다면 이쯤에서 뭔가 이상하다는 것을 눈치챈다. 이메일에는 이상한 점이 없다. 호스팅 제공업체가 이전에 보낸 공식 메시지와 똑같이 보인다. 사용된 글꼴도 똑같고 발송자의 주소도 정확하다. 개인정보보호 정책을 안내하는 링크, 개인 데이터 처리 규칙을 비롯해 아무도 읽지 않는 부분까지 모두 제자리에 정확히 있다.

그러나 관리자 패널 URL이 실제 URL과 조금 다르고 SSL 인증서에 몇 가지 의심스러운 부분이 있다. 아, 이게 바로 피싱인가?

가짜 관리자 패널을 사용해 로그인 인증 정보를 가로채는 이와 같은 공격이 최근 부쩍 늘었다. 고객 데이터를 유출한 서비스 제공업체를 비난하고 싶겠지만 성급한 결론은 금물이다. 의지가 확고한 사이버 범죄자가 특정 업체에서 호스팅하는 웹사이트의 관리자에 대한 정보를 얻기는 그다지 어렵지 않다.

공격자는 서비스 제공업체의 웹사이트에 등록하기만 하면 이메일 템플릿을 입수할 수 있다. 또한 많은 업체가 평가 기간을 제공한다. 이후 공격자는 HTML 편집기를 사용해 이메일 내용을 원하는 대로 변경할 수 있다.

특정 호스팅 제공업체가 사용하는 IP 주소 범위를 알아내기도 어렵지 않다. IP 주소 범위를 확인하기 위한 목적으로 만들어진 서비스가 많다. 그러면 공유된 호스팅의 각 IP 주소에 대한 모든 웹사이트 목록을 얻는 것도 가능하다. 클라우드플레어(Cloudflare)를 사용하는 호스팅 제공업체를 제외하면 문제없다.

이후 범죄자는 웹사이트에서 이메일 주소를 수집하고 'administrator', 'admin', 'contact', 'info'와 같이 많이 사용되는 값을 추가해 메일링 리스트를 생성할 수 있다. 이 과정은 파이썬 스크립트 또는 자동 이메일 수집을 위한 프로그램을 사용해 손쉽게 자동화할 수 있다. 칼리(Kali)를 즐겨 사용한다면 설정을 조정해서 더하베스터(theHarvester)를 이 목적에 사용할 수 있다.

다양한 유틸리티를 사용해 관리자의 이메일 주소뿐만 아니라 도메인 등록 대행사의 이름도 찾을 수 있다. 이 경우 일반적으로 관리자는 가짜 결제 시스템 페이지로 유인되어 도메인 이름 갱신 비용을 지불하라는 요청을 받게 된다. 이 속임수를 알아차리기는 어렵지 않지만 피곤하거나 급할 때는 속아넘어갈 가능성이 있다.

다양한 피싱 공격으로부터 보호하는 것은 어렵지 않다. 호스팅 제어판 로그인에 다중 요소 인증을 설정하고 관리자 패널 페이지를 북마크하면 도움이 된다. 물론 항상 주의도 기울여야 한다.


CMS 설치 스크립트와 서비스 폴더 악용

요즘 콘텐츠 관리 시스템(Content Management System, CMS)을 사용하지 않는 경우를 찾기가 어렵다. 많은 호스팅 제공업체가 워드프레스(WordPress), 드루팔(Drupal), 줌라(Zoomla)와 같은 가장 인기있는 CMS 엔진을 컨테이너에서 신속하게 배포하기 위한 서비스를 제공한다. 호스팅 제어판에서 버튼을 한 번만 클릭하면 된다.

그러나 일부 관리자는 CMS를 수동으로 구성하는 편을 선호해서 개발사 사이트에서 배포판을 다운로드해 FTP를 통해 서버에 업로드한다. 일부 사람에겐 이 방법이 더 익숙하고 안정적이고 관리자의 습관과도 잘 맞는다. 그러나 설치 스크립트와 서비스 폴더를 깜박하고 삭제하지 않는 경우가 있다. 

엔진을 설치할 때 워드프레스 설치 스크립트의 위치가 wp-admin/install.php임은 누구나 안다. 공격자는 구글 도크(Dork)를 사용해서 이 경로에 대한 많은 검색 결과를 얻을 수 있다. 검색 결과에는 워드프레스 기술 결함에 대한 포럼 글 링크가 어지럽게 섞여 있지만 하나씩 살펴보면서 적절한 옵션을 찾아 사이트의 설정을 변경하는 것이 가능하다.

워드프레스 스크립트의 구조는 다음 쿼리를 사용해 볼 수 있다.

inurl: repair.php?repair=1

또한 다음 쿼리를 사용해 잊힌 스크립트를 검색하면 많은 흥미로운 것을 찾아볼 수 있다.

inurl:phpinfo.php

웹 페이지의 특징적인 제목을 사용해 인기있는 줌라(Joomla) 엔진을 설치하기 위한 실제 작동하는 스크립트를 찾을 수 있다. 특수 검색 연산자를 제대로 사용하면 완료되지 않은 설치 또는 버려진 서비스 스크립트를 찾아, 이 운 없는 소유자를 대신해 CMS 설치를 완료하고 CMS에 새 관리자 계정을 만들 수 있다.

관리자가 이런 공격을 차단하려면 서버 폴더를 삭제하거나 컨테이너화를 사용해야 한다. 후자가 일반적으로 더 안전하다.


CMS 구성 문제

또한 공격자는 다른 가상 호스트의 보안 문제도 검색할 수 있다. 예를 들어 구성 결함 또는 기본적인 구성 문제를 찾을 수 있다. 워드프레스, 줌라 및 기타 CMS에는 알려진 취약점이 있는 플러그인이 매우 많다.

먼저 공격자는 호스트에 설치된 CMS의 버전 확인을 시도할 수 있다. 워드프레스의 경우 페이지의 코드를 살피면서 <meta name = "generator" content = "WordPress 5.2.5 "/>와 같은 메타 태그를 찾으면 된다. 워드프레스 테마 버전은 다음과 같은 라인을 검색해서 구할 수 있다.

https://websiteurl/wp-content/themes/theme_name/css/main.css?ver=5.7.2

그런 다음 공격자는 관심 있는 플러그인의 버전을 검색할 수 있다. 많은 플러그인에는 https://websiteurl/wp-content/plugins/plugin_name/readme.txt에 있는 readme 텍스트 파일이 포함돼 있다.

이와 같은 파일을 호스팅 계정에 방치해 호기심 많은 사람이 접근하도록 두지 말고 플러그인을 설치한 후 곧바로 삭제해야 한다. CMS, 테마, 플러그인의 버전을 입수한 공격자는 알려진 취약점 악용을 시도할 수 있다.

일부 워드프레스 사이트에서는 공격자가 /?author=1과 같은 문자열을 추가해 관리자의 이름을 알아낼 수 있다. 기본 설정이 사용될 경우 워드프레스 엔진은 첫 번째 사용자의 유효한 계정 이름과 함께 URL을 반환하며 많은 경우 이 계정에 관리자 권한이 포함된다. 관리자 이름을 알게 된 해커는 무차별 대입(brute-force) 공격을 시도할 수 있다.

많은 웹사이트 관리자가 외부인이 접근할 수 있는 일부 디렉터리를 그대로 남겨둔다. 워드프레스의 경우 다음과 같은 폴더를 흔히 찾을 수 있다.

/wp-content/themes
/wp-content/plugins
/wp-content/uploads


이와 같은 폴더에는 기밀 정보를 비롯한 중요한 정보가 포함될 수 있으므로 절대 외부인이 보도록 허용해서는 안 된다. 각 디렉터리의 루트에 빈 index.html 파일을 배치하거나 사이트의 .htaccess에 Options All -Indexes 라인을 추가해서 서비스 폴더에 대한 접근을 거부해야 한다. 많은 호스팅 제공업체가 이 옵션을 기본적으로 설정한다.

chmod 명령을 사용할 때는 주의해야 하는데, 특히 다수의 하위 디렉터리에 쓰기 및 스크립트 실행 권한을 부여할 때는 더 조심해야 한다. 이런 작업을 경솔하게 하면 예상치 못한 일이 발생할 수 있다.


버려진 계정

몇 개월 전, 한 회사가 필자에게 와서 도움을 요청했다. 웹사이트가 매일 방문자를 서치 마퀴스(Search Marquis)와 같은 사기 사이트로 리디렉션하는데 회사 측은 뚜렷한 이유를 찾지 못했다. 백업에서 서버 폴더의 내용을 복원했지만 며칠 후부터 다시 반복됐다. 스크립트에서 취약점과 백도어를 찾아봤지만 아무것도 발견되지 않았다. 그 사이 웹사이트 관리자는 서버 랙에 파묻혀 커피를 한 드럼 정도 마셨다.

서버 로그를 세밀하게 분석한 다음에야 이유를 찾을 수 있었다. 문제는 호스팅 제어판 비밀번호를 알고 있던 해고된 직원이 오래 전에 만든 '버려진' FTP를 통한 접근이었다. 전 직원은 해고에 불만을 품고 전 직장을 상대로 복수에 나서기로 결심한 듯하다. 불필요한 모든 FTP 계정을 삭제하고 모든 비밀번호를 변경하자 이 골치아픈 문제는 사라졌다.


항상 주의하고 경계하라

보안을 위한 싸움에서 웹사이트 소유자의 주 무기는 주의, 신중, 조심이다. 호스팅 제공업체의 서비스를 사용할 수 있고 사용해야 하지만 이들을 맹목적으로 믿어서는 안 된다. 기본 솔루션이 아무리 안전하게 보여도 사이트 구성에서 가장 일반적인 취약점을 스스로 확인해야 한다. 그 다음 만일을 위해 한번 더 반복해 확인한다. editor@itworld.co.kr 


4일 전

공격자가 호스팅 서비스를 악용하는 방법에서 관리자가 알아야 할 것

David Balaban | CSO
경험이 풍부한 IT 전문가는 주로 순진한 일반 사용자를 속여 수익을 얻는 온라인 사기꾼에게 당하는 일이 거의 없을 것 같다. 그러나 사이버 공격자 가운데 상당수는 가상 서버 관리자와 이들이 관리하는 서비스를 노린다. 관리자가 알고 있어야 할 사기와 악용 방법에 대해 알아보자.
 
ⓒ Getty Images Bank


표적화된 피싱 이메일

모닝 커피를 마시면서 노트북을 열고 이메일 클라이언트를 실행한다. 일상적인 메시지 가운데서 호스팅 업체가 보낸 호스팅 요금 결제 할인을 알리는 이메일이 눈에 띈다. 연말연시라서, 또는 다른 이유로 지금 결제하면 대폭 할인을 해준다는 내용이다.

이메일의 링크를 클릭해 들어간다. 운이 좋다면 이쯤에서 뭔가 이상하다는 것을 눈치챈다. 이메일에는 이상한 점이 없다. 호스팅 제공업체가 이전에 보낸 공식 메시지와 똑같이 보인다. 사용된 글꼴도 똑같고 발송자의 주소도 정확하다. 개인정보보호 정책을 안내하는 링크, 개인 데이터 처리 규칙을 비롯해 아무도 읽지 않는 부분까지 모두 제자리에 정확히 있다.

그러나 관리자 패널 URL이 실제 URL과 조금 다르고 SSL 인증서에 몇 가지 의심스러운 부분이 있다. 아, 이게 바로 피싱인가?

가짜 관리자 패널을 사용해 로그인 인증 정보를 가로채는 이와 같은 공격이 최근 부쩍 늘었다. 고객 데이터를 유출한 서비스 제공업체를 비난하고 싶겠지만 성급한 결론은 금물이다. 의지가 확고한 사이버 범죄자가 특정 업체에서 호스팅하는 웹사이트의 관리자에 대한 정보를 얻기는 그다지 어렵지 않다.

공격자는 서비스 제공업체의 웹사이트에 등록하기만 하면 이메일 템플릿을 입수할 수 있다. 또한 많은 업체가 평가 기간을 제공한다. 이후 공격자는 HTML 편집기를 사용해 이메일 내용을 원하는 대로 변경할 수 있다.

특정 호스팅 제공업체가 사용하는 IP 주소 범위를 알아내기도 어렵지 않다. IP 주소 범위를 확인하기 위한 목적으로 만들어진 서비스가 많다. 그러면 공유된 호스팅의 각 IP 주소에 대한 모든 웹사이트 목록을 얻는 것도 가능하다. 클라우드플레어(Cloudflare)를 사용하는 호스팅 제공업체를 제외하면 문제없다.

이후 범죄자는 웹사이트에서 이메일 주소를 수집하고 'administrator', 'admin', 'contact', 'info'와 같이 많이 사용되는 값을 추가해 메일링 리스트를 생성할 수 있다. 이 과정은 파이썬 스크립트 또는 자동 이메일 수집을 위한 프로그램을 사용해 손쉽게 자동화할 수 있다. 칼리(Kali)를 즐겨 사용한다면 설정을 조정해서 더하베스터(theHarvester)를 이 목적에 사용할 수 있다.

다양한 유틸리티를 사용해 관리자의 이메일 주소뿐만 아니라 도메인 등록 대행사의 이름도 찾을 수 있다. 이 경우 일반적으로 관리자는 가짜 결제 시스템 페이지로 유인되어 도메인 이름 갱신 비용을 지불하라는 요청을 받게 된다. 이 속임수를 알아차리기는 어렵지 않지만 피곤하거나 급할 때는 속아넘어갈 가능성이 있다.

다양한 피싱 공격으로부터 보호하는 것은 어렵지 않다. 호스팅 제어판 로그인에 다중 요소 인증을 설정하고 관리자 패널 페이지를 북마크하면 도움이 된다. 물론 항상 주의도 기울여야 한다.


CMS 설치 스크립트와 서비스 폴더 악용

요즘 콘텐츠 관리 시스템(Content Management System, CMS)을 사용하지 않는 경우를 찾기가 어렵다. 많은 호스팅 제공업체가 워드프레스(WordPress), 드루팔(Drupal), 줌라(Zoomla)와 같은 가장 인기있는 CMS 엔진을 컨테이너에서 신속하게 배포하기 위한 서비스를 제공한다. 호스팅 제어판에서 버튼을 한 번만 클릭하면 된다.

그러나 일부 관리자는 CMS를 수동으로 구성하는 편을 선호해서 개발사 사이트에서 배포판을 다운로드해 FTP를 통해 서버에 업로드한다. 일부 사람에겐 이 방법이 더 익숙하고 안정적이고 관리자의 습관과도 잘 맞는다. 그러나 설치 스크립트와 서비스 폴더를 깜박하고 삭제하지 않는 경우가 있다. 

엔진을 설치할 때 워드프레스 설치 스크립트의 위치가 wp-admin/install.php임은 누구나 안다. 공격자는 구글 도크(Dork)를 사용해서 이 경로에 대한 많은 검색 결과를 얻을 수 있다. 검색 결과에는 워드프레스 기술 결함에 대한 포럼 글 링크가 어지럽게 섞여 있지만 하나씩 살펴보면서 적절한 옵션을 찾아 사이트의 설정을 변경하는 것이 가능하다.

워드프레스 스크립트의 구조는 다음 쿼리를 사용해 볼 수 있다.

inurl: repair.php?repair=1

또한 다음 쿼리를 사용해 잊힌 스크립트를 검색하면 많은 흥미로운 것을 찾아볼 수 있다.

inurl:phpinfo.php

웹 페이지의 특징적인 제목을 사용해 인기있는 줌라(Joomla) 엔진을 설치하기 위한 실제 작동하는 스크립트를 찾을 수 있다. 특수 검색 연산자를 제대로 사용하면 완료되지 않은 설치 또는 버려진 서비스 스크립트를 찾아, 이 운 없는 소유자를 대신해 CMS 설치를 완료하고 CMS에 새 관리자 계정을 만들 수 있다.

관리자가 이런 공격을 차단하려면 서버 폴더를 삭제하거나 컨테이너화를 사용해야 한다. 후자가 일반적으로 더 안전하다.


CMS 구성 문제

또한 공격자는 다른 가상 호스트의 보안 문제도 검색할 수 있다. 예를 들어 구성 결함 또는 기본적인 구성 문제를 찾을 수 있다. 워드프레스, 줌라 및 기타 CMS에는 알려진 취약점이 있는 플러그인이 매우 많다.

먼저 공격자는 호스트에 설치된 CMS의 버전 확인을 시도할 수 있다. 워드프레스의 경우 페이지의 코드를 살피면서 <meta name = "generator" content = "WordPress 5.2.5 "/>와 같은 메타 태그를 찾으면 된다. 워드프레스 테마 버전은 다음과 같은 라인을 검색해서 구할 수 있다.

https://websiteurl/wp-content/themes/theme_name/css/main.css?ver=5.7.2

그런 다음 공격자는 관심 있는 플러그인의 버전을 검색할 수 있다. 많은 플러그인에는 https://websiteurl/wp-content/plugins/plugin_name/readme.txt에 있는 readme 텍스트 파일이 포함돼 있다.

이와 같은 파일을 호스팅 계정에 방치해 호기심 많은 사람이 접근하도록 두지 말고 플러그인을 설치한 후 곧바로 삭제해야 한다. CMS, 테마, 플러그인의 버전을 입수한 공격자는 알려진 취약점 악용을 시도할 수 있다.

일부 워드프레스 사이트에서는 공격자가 /?author=1과 같은 문자열을 추가해 관리자의 이름을 알아낼 수 있다. 기본 설정이 사용될 경우 워드프레스 엔진은 첫 번째 사용자의 유효한 계정 이름과 함께 URL을 반환하며 많은 경우 이 계정에 관리자 권한이 포함된다. 관리자 이름을 알게 된 해커는 무차별 대입(brute-force) 공격을 시도할 수 있다.

많은 웹사이트 관리자가 외부인이 접근할 수 있는 일부 디렉터리를 그대로 남겨둔다. 워드프레스의 경우 다음과 같은 폴더를 흔히 찾을 수 있다.

/wp-content/themes
/wp-content/plugins
/wp-content/uploads


이와 같은 폴더에는 기밀 정보를 비롯한 중요한 정보가 포함될 수 있으므로 절대 외부인이 보도록 허용해서는 안 된다. 각 디렉터리의 루트에 빈 index.html 파일을 배치하거나 사이트의 .htaccess에 Options All -Indexes 라인을 추가해서 서비스 폴더에 대한 접근을 거부해야 한다. 많은 호스팅 제공업체가 이 옵션을 기본적으로 설정한다.

chmod 명령을 사용할 때는 주의해야 하는데, 특히 다수의 하위 디렉터리에 쓰기 및 스크립트 실행 권한을 부여할 때는 더 조심해야 한다. 이런 작업을 경솔하게 하면 예상치 못한 일이 발생할 수 있다.


버려진 계정

몇 개월 전, 한 회사가 필자에게 와서 도움을 요청했다. 웹사이트가 매일 방문자를 서치 마퀴스(Search Marquis)와 같은 사기 사이트로 리디렉션하는데 회사 측은 뚜렷한 이유를 찾지 못했다. 백업에서 서버 폴더의 내용을 복원했지만 며칠 후부터 다시 반복됐다. 스크립트에서 취약점과 백도어를 찾아봤지만 아무것도 발견되지 않았다. 그 사이 웹사이트 관리자는 서버 랙에 파묻혀 커피를 한 드럼 정도 마셨다.

서버 로그를 세밀하게 분석한 다음에야 이유를 찾을 수 있었다. 문제는 호스팅 제어판 비밀번호를 알고 있던 해고된 직원이 오래 전에 만든 '버려진' FTP를 통한 접근이었다. 전 직원은 해고에 불만을 품고 전 직장을 상대로 복수에 나서기로 결심한 듯하다. 불필요한 모든 FTP 계정을 삭제하고 모든 비밀번호를 변경하자 이 골치아픈 문제는 사라졌다.


항상 주의하고 경계하라

보안을 위한 싸움에서 웹사이트 소유자의 주 무기는 주의, 신중, 조심이다. 호스팅 제공업체의 서비스를 사용할 수 있고 사용해야 하지만 이들을 맹목적으로 믿어서는 안 된다. 기본 솔루션이 아무리 안전하게 보여도 사이트 구성에서 가장 일반적인 취약점을 스스로 확인해야 한다. 그 다음 만일을 위해 한번 더 반복해 확인한다. editor@itworld.co.kr 


X