Web Hacking

[WEB] 네트워크 경유 서버 취약점 및 공격 과정

여백 :: 2024. 12. 2. 22:51

 

서버의 네트워크 공격 표면 (attack surface)

  • 공격 표면 : 해커가 네트워크 또는 민감한 데이터에 무단으로 access 하거나, 사이버 공격을 수행하는 데 사용할 수 있는 취약성, 경로 또는 방법(공격 벡터라고도 함)의 총합
    • 1) 물리적으로 (USB) 2) 지근거리로부터(wifi, bluetooth) 3) 원거리에서(TCP/IP) 닿을 수 있음
    • 특히 공격자인 원격 client는 server의 IP주소, TCP 포트를 지정하는 것만으로 원격 프로세스에 접근 가능!

 

 

Attack Surface Management (ASM)

- 조직의 공격 표면을 구성하는 사이버 보안 취약점 및 잠재적 공격 벡터를 지속적으로 발견, 분석, 우선순위 지정, 수정 및 모니터링을 수행하는 일련의 과정

- 방어자의 관점이 아닌 전적으로 해커의 관점에서 "모의 침투"로 진행됨

- 물리 보안, 사회공학 기법, 네트워킹 해킹으로 구분하여 수행

 

- 물리 보안 테스트 예시 => 직원으로 위장하고 서버실에 진입

- 사회공학 기법 예시

=> 내부 직원에게 중요 공지인 것처럼 메일을 보내어 첨부파일을 열도록 함

=> 피싱 사이트를 개설하고, 내부 직원이 ID & 비밀번호를 입력할 때까지 대기

 

네트워크 공격 과정 : 정찰 / 스캐닝 / 침투

  • 정찰 : 인터넷에 연결된 서버의 존재 식별
    • 공격자가 이미 특정 서버의 존재를 알고 있는 경우 정찰 과정을 생략
  • 정찰 유형
    • 무작위 정찰(brute force): 표현 가능한 모든 IP 주소에 대해 접속 시도
    • Google Hacking : 구글 검색 엔진을 이용한 정보 수집 기술
  • Goggle Hacking 예시

intitle:"퀄컴" / intext:"퀄컴"
이렇게 사이트를 지정해서 검색 또한 가능!
"이력서 양식" filetype:docx

 

 

intitle:"index of /"

 

이렇게 google hacking 만으로도 file vulnerability를 확인할 수 있게 된다...ㄷㄷ

 

 

네트워크 공격 과정 : 정찰 / 스캐닝 / 침투

  • 스캐닝 : 특정 서버의 서비스 목록 식별
    • 특정 TCP port에 SYN 메시지를 보냈을 때, SYN+ACK 응답이 돌아오면 포트가 개방된 것!
    • Well-known port 번호 (1~1023)에 대한 스캐닝이 가장 일반적임
    • 비교적 최신 프로토콜의 경우 1024~10000번대 포트 번호를 사용하는 추세

 

nmap을 이용한 정찰 & 스캐닝

  • nmap 설치
    • Windows는 https://nmap.org/download.html 를 방문하여 nmap-7.95-setup.exe를 다운로드 받으면 됨
    • Rocky Linux의 경우 # dnf install nmap 명령 입력
    • 설치가 잘 되었는지 확인하려면 $ nmap --version으로 확인하면 된다!
  • 호스트 정찰
    • 정찰하려는 네트워크의 대역이 59.6.51.1~59.6.51.254 인 경우 $ nmap -sn 59.6.51.1-254 를 입력하여 254개의 IP를 스캐닝 해준다.
    • -sn은 ping scan 모드로, 포트 스캔을 생략하고 호스트가 활성 상태인지 확인하는 데만 집중

 

  • 특정 Host 스캐닝하기
    • 호스트 "59.6.51.163"가 제공하는 서비스 목록을 식별하려는 경우 $ nmap 59.6.51.163 입력
    • 좋은 쪽으로도 사용할 수 있는데, 해당 서버가 내꺼라면 열려있는 포트를 명령어 입력 없이 한 눈에 볼 수 있다는 장점이 존재한다! 현재 아래 실습에서는 3개의 포트가 열려있음을 알 수 있음

 

 

  • 서비스 핑거프린팅 (fingerprinting) : 서버가 어떤 기능을 하는지 확인
    • -sV : 서비스 핑거프린팅
    • -p : 명시된 특정 포트만 조사

열려있는 포트 세 개를 p 옵션으로 나열하여 조사해보면 위와 같이 각 서비스들의 버전과 OS까지 알 수 있음

 

<VMware 가상머신 대역 스캔 실습해보았음>

 

-T5 옵션을 주면 더 빠르게 스캔한다.

 

rocky linux의 모든 포트에 대한 서비스 식별

 

  • OSINT(Open-Source Intelligence)
    • 외부에 공개된 정보를 취합해 위협을 평가하는 프로세스 (정찰 스캐닝 과정을 대신해줌)
    • 네트워크 공격 혹은 모의 침투 과정의 첫 단추로, 정찰과 스캐닝 과정을 획기적으로 단축할 수 있음
    • 예: shodan.io에서 검색한 59.6.51.163 호스트
    • 22, 80, 9090 포트 외 과거에 개설되었던 3389 (Remote Desktop) 서비스까지 식별할 수 있음 

 

 

네트워크 공격 과정 : 정찰, 스캐닝, 침투

** 침투 단계에서도 brute-force 공격이 수행된다!

ex1) SSH 서비스를 대상으로 수행된 brute-force 공격 시도 흔적

# lastb | head
root ssh:notty 117.80.88.163 Mon Nov 25 09:48 still running
root ssh:notty 117.80.88.163 Mon Nov 25 09:48 - 09:48 (00:00)
root ssh:notty 117.80.88.163 Mon Nov 25 09:48 - 09:48 (00:00)
root ssh:notty 117.80.88.163 Mon Nov 25 09:47 - 09:47 (00:00)
root ssh:notty 117.80.88.163 Mon Nov 25 09:47 - 09:47 (00:00)
sky ssh:notty 34.64.41.134 Mon Nov 25 09:47 - 09:47 (00:00)
nas ssh:notty 68.233.116.124 Mon Nov 25 09:47 - 09:47 (00:00)
root ssh:notty 117.80.88.163 Mon Nov 25 09:47 - 09:47 (00:00)
sky ssh:notty 34.64.41.134 Mon Nov 25 09:47 - 09:47 (00:00)
nas ssh:notty 68.233.116.124 Mon Nov 25 09:47 - 09:47 (00:00)

 

=> lastb로 실패한 과거 로그인 정보 log를 보았을 때, 1분 내에 root, sky, nas 계정으로 수차례 접속 시도 포착 

 

ex2) HTTP 서비스를 대상으로 수행된 brute-force 공격 시도 흔적

# cat /var/log/httpd/access_log

# 워드프레스 관리자 페이지가 있는지 무작위 공격으로 식별
162.158.87.232 - - [02/Dec/2024:09:19:18 +0900] "GET /wordpress/wp-admin/setup-config.php HTTP/1.1"
172.68.194.183 - - [02/Dec/2024:09:20:31 +0900] "GET /wp-admin/setup-config.php HTTP/1.1" 404 196

# non-printable 문자열을 서버에 제출한 뒤, 이상한 값을 반환하는지 조사 (서버 프로그램의 취약점 존재 여부 식별)
203.252.204.9 - - [02/Dec/2024:09:25:09 +0900] "\x16\x03\x01\x02" 400 226 "-" "-"
203.252.204.9 - - [02/Dec/2024:09:25:09 +0900] "\x16\x03\x01\x02" 400 226 "-" "-"
203.252.204.9 - - [02/Dec/2024:09:25:09 +0900] "\x16\x03\x01\x02" 400 226 "-" "-"
203.252.204.9 - - [02/Dec/2024:09:25:09 +0900] "\x16\x03\x01\x02" 400 226 "-" "-"
203.252.204.9 - - [02/Dec/2024:09:25:10 +0900] "\x16\x03\x01\x02" 400 226 "-" "-"