쇼단(shodan) 을 이용한 모의해킹 (Pen-testing)

 

2014년 보안 분야에서 화두가 되고 있는 키워드 중 하나가 바로
사물 인터넷 (Internet of Things – IoT)이 아닐까 싶다.
기존에 컴퓨터(혹은 스마트폰)에 국한되어 있던 ‘네트워킹’의 영역이 냉장고, 청소기, 비데(?)와 같은
일반 사물로 확장되면서, 이에 대한 보안의 중요성 역시 커지고 있다.

이 포스팅은 사물 인터넷과 관련된 검색 엔진 서비스 ‘쇼단(shodan)’에 대해 알아보고
나아가 쇼단 API를 활용한 모의해킹 활용 방법을 다룰 것이다.

※ 주의 : 본 포스팅의 내용을 악용할 시 법적 문제를 야기할 수 있으므로,
반드시 법적 테두리 안에서 허용되는 경우에만 사용하시기 바랍니다.

 

쇼단(Shodan)이란 무엇인가?

쇼단을 정의하자면 “검색 엔진”에 가깝다고 할 수 있다.
다만 일반적인 Search Engine처럼 웹사이트의 정보를 가져오는 것이 아니라
라우터, 스위치, FTP, 특정 웹 서버(Apache, IIS 등)에 대한 정보를 수집하고 그 결과를 보여준다.

쇼단의 대략적인 운영 현황은 아래와 같다 (2013년 자체 조사 결과이며 현재와 다를 수 있음)

  • 서버 위치 : 샌프란시스코 (클라우드 서비스 이용)
  • 유료 회원 : 9,000명 이상
  • 수집 대상 : 서버, 네트워크 장비, 관리자용 서비스, 산업용 제어시스템(SCADA), 인터넷 전화, 화상 기기(CCTV) 등
  • 기타 : 스크립트 언어용 API를 제공함 (유료 결재 필요)

 

쇼단 둘러 보기

웹사이트 주소는 http://shodanhq.com 이며, 접속하면 아래와 같은 화면을 볼 수 있다.

Cap 2014-06-24 10-31-41-561

[ Expose Online Deivces ] 문구 아래, 이 사이트의 특징을 말해주는 단어들이 보인다.

웹캠, 라우터, 발전소, 아이폰, Wind Turbines(아마도 풍력 발전관련일듯), 냉장고, 그리고 VoIP 전화기 등
앞서 말한 사물 인터넷 관련 정보부터 SCADA류의 산업 제어 시스템까지 방대한 정보를 수집하고 있음을
짐작할 수 있다.

검색은 기본적으로 아래 두가지 방법을 제공하고 있으며, 사용자가 편한쪽을 선택하면 되겠다.

1. shodanhq.com 사이트를 이용한 검색 (웹 기반)
2. shodan api를 이용한 검색 (스크립트 작성 필요)

그러나, Free 계정으로는 조회할 수 있는 키워드의 수와 결과(results)의 양이 제한되어 있기 때문에
제대로 된(?) 정보를 얻기 위해서는 유료 결재를 필요로 하게 될 것이다.

아래는 쇼단 서비스의 유료 결재 정보를 보여주고 있다.

Cap 2014-06-24 13-08-57-049

기본적으로 Credit 이라는 단위를 사용하고 있으며, 1 Credit당 10,000개의 Query결과를
가져올 수 있다. 물론 Query 할 수 있는 키워드의 갯수도 Credit의 영향을 받는다.

개인적으로는 위처럼 일반 Credit을 구매하기 보다는 API add-on 크레딧을 구매하는 것이
현명한 선택이 되지 않을까 싶다.
API 용 Credit의 경우 Query 필터의 제한이 없고, 내가 원하는 대로 Customizing 할 수 있다는
장점이 있다.

Cap 2014-06-24 13-12-30-841

그럼 본격적으로 쇼단(Shodan) 사용법에 대해 알아보도록 하자

 

쇼단 웹(Web) 사이트를 이용한 검색

앞서 언급한바와 같이 쇼단은 다양한 종류의 기기 및 사물인터넷에 대한 검색을 제공하므로
목적에 맞는 검색어를 입력하는 것이 중요하다.

기본적으로 쇼단 웹(Web)사이트내에서 검색시 아래와 같은 화면을 볼 수 있을 것이다.

search_results

1. 검색어 : “apache” 웹서버를 검색어로 넣었다.
2,3 검색 결과 저장 : 결과를 XML형태로 Export하거나 그래프 형식으로 보여준다.
4. 키워드에 대한 전체 검색 결과를 나타낸다.
5. 검색어 결과를 국가별로 세분화해서 찾을 수 있다. (필터링을 통해서도 가능)
6,7 검색 결과 : IP, 국가 정보, 그리고 접속했을 당시의 Banner 정보를 보여준다.

만약 어떤 검색어를 넣어야 할 지 모르겠다면 [이곳] 을 방문하여
인기있는(?) 검색어들을 살펴보는 것도 도움이 될 것이다.

또한, 쇼단에서는 검색 결과의 범위를 좁힐 수 있는 다양한 필터들을 아래와 같이 제공하고 있다.

city 검색 결과를 주어진 도시내로 한정하여 보여준다. (ex. apache city:”Zürich”)
country 검색 결과를 주어진 국가내로 한정하여 보여준다. (ex. nginx country:DE)
geo 특정 위도/경도 정보를 참고후, 근처에 있는 검색 결과를 보여준다.
(ex. apache geo:42.9693,-74.1224)
hostname 검색 결과에서 주어진 호스트 네임과 매칭 되는 결과를 보여준다.
(ex. “Server: gws” hostname:google)
net 특정 Class에 한정하여 검색 결과를 보여준다 (ex.net:216.219.143.0/24)
os 특정 OS에 대한 검색 결과를 보여준다. (ex. microsoft-iis os:”windows 2003″)
port 특정 포트에 대한 검색 결과를 보여준다. (ex.proftpd port:21)
before/after 특정 날짜 전/후에 대한 검색 결과를 보여준다. (ex. nginx before:18/01/2010)

검색결과에 대한 필터링 방법은 [이곳] 에서 좀 더 자세하게 확인 가능하다.

 

쇼단 API를 이용한 검색

쇼단 검색엔진은 사용자 편의성을 위해 API를 제공하고 있다.
API는 Python, Ruby, Node.js 등의 인터페이스로 제공되며, 이를 이용하면
빠르게 검색이 가능할 뿐만 아니라, 검색 결과를 사용자 입맞에 맞게 재가공하여 사용가능하다.

쇼단 API를 사용하는 방법은 아래와 같다.

Step 1 : 쇼단 API Code 얻기

유료 결재를 통해 Shodan Add-on 항목에서 “Unlocked API” 를 구매한다.
쿼리 구문에 제한 없이 이용이 가능하나, 쿼리양은 한달에 100개로 제한된다.
api_buy

구매가 완료되면 아래와 같이 API 코드를 발급받을 수 있다.

api_key

Step 2 : 파이썬 라이브러리 설치

쇼단 API를 사용하기 위해, 해당 라이브러리를 설치해줘야 한다.
(본 포스팅에서는 파이썬을 기준으로 설명하겠다.)
Git Hub를 사용하고 싶다면 https://github.com/achillean/shodan-python 를 방문하면 되지만
pip 또는 easy_install을 이용하면 훨씬 간편하게 설치가 가능하다.

Cap 2014-06-24 08-17-27-333

윈도우 : python easy_install.py shodan
리눅스 : pip install shodan

※ Ruby, Powershell 등과 연동하는 방법은 https://developer.shodan.io/api/clients 을 참고하기 바란다.

Step 3 : 검색을 위한 API 연동 및 파이썬 코드 작성

파이썬 라이브러리가 설치된 상태에서 기본적으로 API를 연동하는 코드는 아래와 같다.

 

API를 이용하면 위에서 언급한 필터를 자유롭게 사용하여 검색이 가능하다.
아래 코드는 ARGV를 입력받아 특정 스트링 또는 IP 대역에 대한 검색을 해주는 코드이다.
API키는 결재 후 받은 키로 바꿔서 사용하면 된다.

 

위의 코드는 일반적인 검색을 위한 것이며, 각자의 목적에 맞게 코드를 수정하여 사용하면 된다.

 

쇼단 검색엔진과 모의해킹

사실, 모의해킹의 관점을 “시스템 장악이 가능한가?”에 촛점을 맞춘다면
쇼단 검색엔진의 활용도는 그리 높지 않다고 개인적으로 생각된다.
(쇼단은 취약점 자체를 찾아주는 엔진은 아니다)

그러나 기업의 보안 수준에 대해 기술적인 평가를 함에 있어
외부로 부터 노출된 정보는 없는지, 혹은 서버등의 설정 실수로 인한 위험성은 없는지를
판단하는 도구로 활용하는게 더 낫다고 생각된다.

모의해킹에 활용가능한 쇼단 검색엔진의 검색 항목을 아래와 같이 선정해보았다.

  • admin/admin, admin/1234등과 같은 Default Password 유무
  • FTP, SSH등의 서버 접속시 노출되는 IP 정보 및 내부자 정보
    (cisco IOS의 경우 간혹 내부 담당자 정보가 그대로 노출)
  • 해당 기업이 갖고 있는 IP대역에 대한 스캔 결과
    (NMAP 없이도 오픈 되어 있는 IP 및 Port 정보 확인 가능)
  • 기업 내부 웹캠, VoIP등에 대한 접속 가능 여부 확인

그럼 한가지 씩 예를 살펴보면서, 실제 모의해킹에 어떻게 활용할 수 있는지 살펴보자
본 예제는 Shodan API를 활용하였으나, 편의에 따라 Web 환경을 사용해도 무방하다.

예제 1) Default Password

telnet_default

위 그림은 쇼단 서치엔진 API를 이용해 “Default Password”를 검색한 결과 중 하나이다.

보다시피, 기본 관리자 계정과 비밀번호가 배너를 통해 노출되어 있으며,
Telnet을 통해 정상적으로 로그인이 가능한 것을 확인할 수 있었다.

만약 모의해킹 프로젝트에서 IP 대역이 주어진다면
위와 같은 과정을 통해 운좋게(?) 관리자 계정을 따 낼 수 있을지도 모른다.
(사실 현실에서는 힘들 수도 있다)

예제 2) FTP, SSH 등의 관리 콘솔 접속 여부 및 내부자 정보 노출

cisco_dp

위 그림은 CIsco관련 장비로 보인다. 정확하게 어떤 정보인지는 알 수 없지만,
Aceess Control이 제대로 되어 있지 않아 외부에 그대로 노출되어 있는것을 확인할 수 있다.

또한, 배너상에 관리자 정보 혹은 서브 담당자, 조직정보 등이 노출되면
공격자 입장에서는 공격타겟으로 활용할만한 정보를 수집할 수 있게 된다.
(실제 국내의 경우 몇몇 케이스가 확인됨)

예제 3)  특정 IP 대역 스캔을 통한 정보 수집

앞서 우리는 쇼단 검색엔진이 특정 IP 대역 (A/B/C클래스 지원)에 대한 검색이 가능하다는 것을 확인했다.

모의해킹 프로젝트에서 보통 NMAP등을 활용하여 포트 스캐닝을 하겠지만
수만개의 IP를 보유하고 있는 대규모 회사에서 보안 점검을 수행한다고 했을 때는
NMAP의 활용이 부담스러운 것이 사실이다.

이런 경우 쇼단 검색엔진을 활용하면, 현재 보유하고 있는 공인 IP대역에 대한 스캔을 통해
점검대상을 1차적으로 선별하는 것이 가능하다.

예제 4) 웹캠 , VoIP등에 대한 취약성 여부 점검

webcam

인터넷과 연결된 WebCam의 보급이 늘어나면서 관리자 페이지에 대한 보안이 적절하지 않은 경우
위와 같이 사생활이 노출될 수 있다.

위 사이트는 실제 (admin/admin)을 통해 접속이 가능했으며,
비슷한 방법으로 기업 내부에서 사용중인 무선 공유기 관리페이지 혹은
복합기 등의 관리자 페이지에도 접근이 가능할 수 있다.

 

마무리 지으며

쇼단 검색엔진은 5억개 이상의 장비에 대한 스캔을 통해 자체적으로DB를 구축하고 있다.
기본적으로 기본 배너로 부터 정보를 수집함은 물론
취약한 계정 (admin/1234 등)을 대입하여 접속 가능한 사이트 정보도 갖고 있다.

칼을 횟집에서 사용하면 맛있는 음식을 위한 도구로 활용가능하지만
강도가 사용하게 되면 흉기로 돌변하게 된다.

쇼단 검색엔진 마찬가지로 활용함에 있어 정보보안인으로써의 직업윤리를
다시 한번 상기해본 후 활용할 것을 권장한다.

또한 기업 내 정보보안 관련 직무자가 활용가능한 아이디어가 있다면
함께 나눴으면 한다.

 

Site Footer

Sliding Sidebar

About Me

About Me

June Park