본문 바로가기
Security Project

7. shodan 검색 서비스

by 귀멸 2022. 8. 14.

shodan을 이용한 정보 수집 (https://shodan.io) 

구글 검색 서비스는 웹 콘텐츠를 색인하여 제공하는 반면 쇼단은 인터넷을 사용하는 서버 또는 장비에서 열려 있는

포트 정보를 수집하여 제공

 

네트워크/서버 정보 확인 (http://www.shodanhq.com)

시스템 배너 정보로부터 포트 정보/메타데이터들을 이용해서 특정 디바이스, 컴퓨터, 라우터, 서버의 정보 검색

특정 시스템 대상으로 공격 대상을 검색 할 시에 유용하게 활용

아래 다양한 정보들 확인 가능

HTTP header and certificate information

Several gaming server banners

FTP banners

NetBIOS server banner

SSH header and server key data

Telnet banner

SMTP banner ....

 

불필요하게 오픈된 포트 정보를 확인할 수 있음

직접 Nmap 스캔을 하는 것보다 더 효율적일 수 있음

banner 버전 정보에 맞는 취약점 데이터베이스를 제공


shodan 검색 옵션

필터 설명
os 입력한 os를 포함하는 정보(os:"ubuntu")
port 입력한 포트와 일치하는 정보 검색 (port:"8080")
title HTML의 title과 일치하는 정보 검색 (title:"naver.com")
product 소프트웨어나 제품의 이름을 기준으로 검색 (product:"cisco")
category 카테고리 기준으로 검색 ics, malware
has_screenshot 검색결과에 screenshot 포함 여부를 true/false로 결정 (has_screenshot:true)
ip 넷필터명을 기준으로 검색
net 네트워크 ip 대역을 기준으로 검색 (net:"74.125.23.0/24")
hostname 호스트네임으로 검색 (hostname:"naver.com")
all 검색 결과에서 도출되는 문자열을 기준으로 그 안에서 키워드 검색 (all:"metrics")
country 국가별로 검색 (country:"KR")
http.component 기반 컴퍼넌트 검색 (http.component:"php")
!,-(~을 제외하고) !port:443,80 443,80포트 번호를 사용하지 않는 / -port:22

port:"21" all:"Anonymous user logged in"  : FTP 서비스 중 익명으로 연결되는 서버 검색

port:"21" all:"230 Login Successful"   : port21을 사용하는 FTP 서비스 로그인이 성공한 사례 검색

port:"80" has_screenshot:"true"         : 80 포트 서비스 중에서 스크린샷이 저장된 정보 확인 (webcam 취약 사례)


shodan 콘솔 명령어 활용

현재 kali 버전에서는 shodan이 기본적으로 설치되어 있다. 

shodan 명령을 입력하여 command를 쭉 읽어본다.

여기에 나오는 command는 python code로 명령어를 구성하지 않아도 shodan에서 기본적으로 구현해 놓은 명령어 들이다.

 

┌──(kali㉿kali)-[~/docker]
└─$ shodan   

shodan.io 페이지에서 shodan 유료버전을 구매하지 않았고 구글로 가입만 했다. 페이지의 accout로 가보면

API Key를 볼 수 있다. 이를 복사하여 칼리 리눅스 콘솔에서 세팅해준다.

 

┌──(kali㉿kali)-[~/docker]
└─$ shodan init (API key 붙여 넣기)  : 계정 연결 완료

 

  1) 호스트 ip로 검색

  2)  shodan을 이용한 포트 스캔 (유료회원 credit  필요) 

┌──(kali㉿kali)-[~/docker]
└─$ shodan scan submit (ip address)   

 

  3) shodan database에서 검색 및 필터 거는 법   

┌──(kali㉿kali)-[~/docker]
└─$ shodan search --fields ip_str,port,hostnames "product:openssh -port:22" 

 

  4) shodan stats --facets product/port/vuln product:d-link

                  요약해줘 ( 기준으로 )( 검색어  )

  5) json 파일로 검색 결과 다운로드 (유료회원 credit 필요) 후 parse로 검색

┌──(kali㉿kali)-[~/docker]
└─$ shodan download webcam_data webcam  


┌──(kali㉿kali)-[~/docker]
└─$ shodan parse --fields ip_str,hostnames webcam_data.json.gz     : 다운로드 파일에서 검색

 

┌──(kali㉿kali)-[~/docker]
└─$ shodan convert webcam_data.json.gz xlsx         : 다운로드 파일 액셀로 변환

 


쇼단 파이썬 API 활용

python에 들어가서 쇼단 모듈을 가져와 사용하는 방법

(8.8.8.8은 Google)

key 값들이 위와 같이 있다

이 정보들을 확인해 보면... 아래와 같이 볼 수 있다.

 

1) search 함수를 이용한 정보 검색

code을 .py로 만들어서 활용

┌──(kali㉿kali)-[~/docker]
└─$ sudo vim python_shodan01.py  

아래처럼 입력 후 저장

┌──(kali㉿kali)-[~/docker]
└─$ python python_shodan01.py    : python으로 실행 / json파일로 결과값을 가져옴

전체를 가져온 것을 확인하고 필터를 적용해 원하는 것만을 가져오도록 python 파일 수정

 

2) 사용자 입력받아서 IP 정보 검색

┌──(kali㉿kali)-[~/docker]
└─$ python python_shodan01.py mongodb

query 값을 입력해서 실행하면 ip 정보만을 가져온다.

 

결과값을 txt 파일로 저장 후 읽어 보기

┌──(kali㉿kali)-[~/docker]
└─$ python python_shodan01.py mongodb > mongodb_ip.txt

┌──(kali㉿kali)-[~/docker]
└─$ cat mongodb_ip.txt | more

 

3) FTP 익명 연결 파이썬 공격

┌──(kali㉿kali)-[~/docker]
└─$ sudo vim python_ftp.py  

아래와 같이 구문 작성

┌──(kali㉿kali)-[~/docker]
└─$ python python_ftp.py

위와 같이 익명 연결의 ftp ip 주소들을 찾아서 공격 코드를 실행한 사례가 있음

위의 ip 주소를 리스트 화해서 접속이 되는 익명 ftp 연결 ip 주소를 다시 추려서 리스트화 시키고 나서 공격 수행

 

4) 쇼단 API 활용 도구 사례 (github)

github에서 다른 사람이 제작한 py script를 가져와 사용해 보는 것

  •  - shodan-eye

┌──(kali㉿kali)-[~/docker]
└─$ sudo git clone https://github.com/BullsEye0/shodan-eye.git

 

┌──(kali㉿kali)-[~/docker]
└─$ cd shodan-eye
                                                                                                           
┌──(kali㉿kali)-[~/docker/shodan-eye]
└─$ ls
 img   LICENSE   README.md   requirements.txt  'Shodan_Dorks_The_Internet_of_Sh*t.txt'   shodan-eye.py

 

항상 먼저 requirements를 확인해 본다.

┌──(kali㉿kali)-[~/docker/shodan-eye]
└─$ cat requirements.txt     
shodan

필요한 설치 목록이 shodan 밖에 없음 다른 여러 가지가 있는 경우 아래 구문으로 한 번에 설치할 수 있다.

┌──(kali㉿kali)-[~/docker/shodan-eye]
└─$ sudo pip install -r requirements.txt                      

┌──(kali㉿kali)-[~/docker/shodan-eye]
└─$ sudo python shodan-eye.py

jenkins로 키워드 입력하면 file에 결과가 저장됨

 

┌──(kali㉿kali)-[~/docker/shodan-eye]
└─$ cat shodan_test.txt | more

 

shodan-eye.py 코드 구성 살펴보기

 

'Security Project' 카테고리의 다른 글

9. 구글 해킹을 이용한 정보 수집  (0) 2022.08.14
8. Censys 검색 서비스  (0) 2022.08.14
6. 정보 수집 단계 (1 - DNS/Sub Domain)  (0) 2022.08.10
5. 도커 컨테이너 활용  (0) 2022.08.07
4. Kali Linux 기초  (0) 2022.08.04

댓글