Shodan 은 인터넷 상에 노출된 다양한 민감정보들을 검색해 볼 수 있는 검색엔진 입니다. 보통은 Shodan 을 웹으로 접근하여 검색하게 되는데, CLI 에서도 쉽게 사용 할 수 있는 방법이 있어 소개합니다.
먼저 http://cli.shodan.io 에 접근하면 아래와 같은 화면을 볼 수 있습니다. 여기서 Get your API Key 를 클릭하면 shodan 계정으로 로그인을 요구하게 됩니다. 여기서 shodan 에 가입하여 로그인하거나 Facebook, Google 등의 계정으로 로그인하게 되면 API 키를 얻을 수 있습니다.
API Key 는 별도로 메모 하시고, 아래와 같이 python 의 easy_install 을 이용하여 shodan 커맨드를 설치합니다.
❯ easy_install shodan ❯ shodan init API키
이제 shodan 명령을 이용하여 shodan 검색엔진을 CLI 에서 사용 할 수 있습니다.
❯ shodan host 189.201.128.250 189.201.128.250 Hostnames: ptr.reditmx.com City: Mexico Country: Mexico Organization: Metro Net, S.A.P.I. de C.V. Updated: 2019-06-24T22:50:09.654424 Number of open ports: 3 Vulnerabilities: Heartbleed Ports: 443/tcp |-- SSL Versions: -SSLv2, -TLSv1.3, SSLv3, TLSv1, TLSv1.1, TLSv1.2 |-- Diffie-Hellman Parameters: Bits: 1024 Generator: 2 Fingerprint: RFC2409/Oakley Group 2 541/tcp 8009/tcp FortiGate Endpoint Control httpd
<Host IP에 대한 shodan 검색 예>
❯ shodan stats --facets port os:linux Top 10 Results for Facet: port 80 593,503 22 155,540 8089 137,714 443 134,887 53 133,728 8080 115,463 3306 83,589 7547 68,299 993 32,023 995 31,390
<Linux OS에서 사용 및 노출되는 포트 통계>
또한 가단하게 json 파일을 CSV 형태로 파싱 할 수 있는 기능도 제공합니다. 예를 들어 microsoft-data.json.gz 라는 파일안에 있는 json 파일에서 ip_str, port, org 필드의 내용만을 , 를 구분자로 CSV 로 파싱하게 된다면 아래와 같이 명령어 한 줄로 진행 할 수 있습니다.
> shodan parse --fields ip_str,port,org --separator , microsoft-data.json.gz
이상입니다. 앞으로 shodan 을 이용하여 다양한 정보와 통계를 얻어 낼 수 있는 CLI command 가 확인되면 공개하도록 하겠습니다. 감사합니다.