해킹 vs 크래킹
해킹
- 전자 회로나 컴퓨터의 하드웨어 / 소픙트웨어, 네트워크, 웹사이트 등 각종 정보 체계가 의도하지 않은 동작을 일으키도록 하거나 체계 내에서 주어진 권한 이상으로 정보를 수집, 변경 가능하게 하는 행위를 광범위하게 이르는 말
- 초기의 해킹은 단지 개인의 지적 호기심을 충족시키는 경우가 대부분이었다
크래킹
- 악의적인 의도를 가진 해커가 시스템에 침입하여 정보를 훔쳐오거나 시스템을 파괴하는 행위를 하는 행위
- 악의적인 목적을 가지고 하는 해킹
해커의 종류
- 화이트 해커(White-Hat)
- 선의의 목적을 가지고 타인의 시스템에 허가를 받고 해킹을 하는 사람
- 시스템의 취약점을 찾아내기 위해 해킹을 시도하고 취약점이 발견되면 이에 대한 대응 전략이나 방안을 제시
- 그레이 해커(Gray-Hat)
- 선의의 목적을 가지고 있지만 타인의 시스템에 허가 없이 해킹을 하는 사람
- 시스템에 침입한 후 취약점을 개선시켜주고 침입의 흔적(log)을 지우고 간다
- 블랙 해커(Black-Hat)
- 악의적인 목적을 가지고 해킹하는 크래커들을 뜻한다
- 악성코드를 유포하거나 시스템에 침입하여 데이터를 수집, 변조, 파괴 시키고, 시스템까지 파괴시킨
해킹의 기초 단계
- 정보 수집
- 정찰 (Reconnaissance)
- 해킹 하려고하는 시스템의 큰 정보들을 수집하는 단계이다
- ex) 시스템의 사이즈는 어느정도인지, 웹 서버 주소는 무엇인지, 어떤 서비스들을 제공하는지
- 스캐닝 및 취약점 분석 (Scanning and Vulnerability analysis)
- 스캐닝을 통해 시스템에 상세한 정보들을 수집하고 취약점을 분석하는 단계
- ex) 시스템의 OS, 시스템에 사용되는 프로그램의 버전, 오픈된 포트주소 등 분석
- 정찰 (Reconnaissance)
- 침투 및 시스템 장악
- 침투 (Gainning Access)
- 정보 수집단계에서 얻은 취약점 정보를 통해 시스템에 침투하는 단계
- 침투 (Gainning Access)
- 공격 전이
- 권한 상승 (Privilege Ecalation)
- 시스템에 침투하여 접근 권한을 높여 시스템의 주도권을 가져오는 단계
- ex) 일반 사용자 권한 -> 관리자 (루트) 권한
- 백도어 관리 (Maintaining Access)
- 시스템에 언제든지 접근 할 수 있도록 백도어 계정을 생성하거나 백도어 프로그램을 설치하는 단계
- 흔적 지우 (Cover Track)
- 시스템에 침투한것을 숨기기 위해 시스템에 로그를 지우는 단계
- 권한 상승 (Privilege Ecalation)
정보수집
포트 스캔(Port Scanning)
- 공격 대상의 시스템이나 네트워크에 어떤 포트가 열려있고 서비스를 하는지 알아내기 위한 사전 작업
TCP 스캔
- TCP 스캔에는 Open Scan, Half-Open Scan, Stealth Scan이 있다
01. TCP Open Scan(= TCP Connected Scan)
스캔 방법 | 3-Way Handshake를 통해 포트 별로 직접 접속하여 스캔하는 방식 TCP/IP connect()함수를 사용하여 스캔 |
Open Port | 3-Way Handshake가 완료되면 스캔한 시스템에게 RST+ACK 전송하여 연결을 종료 |
Close Port | 상대방으로부터 RST+ACK를 전송을 받는 경우 |
장점 | 상대방의 포트상태를 정확하게 파악할 수 있다 |
주의점 | 상대방에게 흔적을 남긴다(3-Way Handsake로 세션을 수립하기 때문에) |
02. TCP Half Scan(TCP SYN Scan)
스캔 방법 | TCP 헤더의 제어 플래그 중 SYN 플래그를 전송하여 스캔하는 방식 |
Open Port | 상대방에게 SYN + ACK 응답이 올 경우 RST을 전송하여 연결을 강제로 종료 |
Close Port | 상대방으로부터 RST+ACK를 전송을 받는 경우 |
장점 | 3-Way Handshake가 성립되지 않아 세션에 대한 로그가 남지 않아 추적이 어렵다 |
주의점 | SYN 세그먼트를 전송한 기록이 남아 스캐닝한 사실을 완전히 숨길 수는 없다 |
03 TCP Stealth Scan
03-1) FIN Scan
스캔 방법 | TCP 헤더의 제어 플래그 중 FIN 플래그를 전송하여 스캔하는 방식 |
Open Port | 상대방에게 응답이 없을 경우 포트가 열려있다 |
Close Port | 상대방으로부터 RST+ACK를 전송을 받는 경우 |
장점 | 포트가 닫혀 있을 때만 RST+ACK를 전송받기 때문에 포트가 닫힌 것을 확실히 알 수 있다 |
주의점 | 방화벽으로 막혔을 경우에도 응답이 없을 수 있다 |
03-2) NULL Scan
스캔 방법 | TCP 헤더의 제어 플래그 설정 없이 전송하여 스캔하는 방식 |
Open Port | 상대방에게 응답이 없을 경우 포트가 열려있다 |
Close Port | 상대방으로부터 RST+ACK를 전송을 받는 경우 |
장점 | 포트가 닫혀 있을 때만 RST+ACK를 전송받기 때문에 포트가 닫힌 것을 확실히 알 수 있다 |
주의점 | 방화벽으로 막혔을 경우에도 응답이 없을 수 있다 |
03-3) X-MAS Scan
스캔 방법 | TCP 헤더의 제어 플래그 URG, PSH, FIN을 동시에 전송하여 스캔하는 방식 |
Open Port | 상대방에게 응답이 없을 경우 포트가 열려있다 |
Close Port | 상대방으로부터 RST+ACK를 전송을 받는 경우 |
장점 | 포트가 닫혀 있을 때만 RST+ACK를 전송받기 때문에 포트가 닫힌 것을 확실히 알 수 있다 |
주의점 | 방화벽으로 막혔을 경우에도 응답이 없을 수 있다 |
03-4) ACK Scan
스캔 방법 | TCP 헤더의 제어 플래그 중 ACK 플래그를 전송하여 스캔하는 방식 |
Open Port | 상대방에게 ICMP 응답이 돌아오거나 응답이 없을 경우 |
Close Port | 필터링 되지 않고 RST를 전송 받을 경우 |
장점 | 방화벽이 Staeful한 필터인지, SYN 패킷을 차단하는 필터링인지를 점검할 수 있다 |
UDP 스캔
- UDP 통신은 세션을 수립하지 않기 때문에 UDP 스캔도 Stealth Scan이다
스캔 방법 | 스캔하려는 포트번호를 목적지 포트로 설정하여 스캔하는 방식 |
Open Port | 상대방에게 응답이 없을 경우 |
Close Port | ICMP Destination Port Unreachalbe을 전송 받을 경우 |
Decoy Scan
- 다양한 주소를 위조하여 스캔한다
스캔 방법 | 다양한 IP주소로 변조하여 스캔하는 방식 |
특징 | 실제 스캐너의 주소 외에도 다양한 IP로 스캔하기 때문에 상대방은 누가 스캔하는지 파악하기 어렵다 |
※ TCP Header
- Source Port(송신 포트), Destination Port(수신 포트):
- 송신 포트에는 0~65536중 송신자의 랜덤한 포트가 들어간다
- 수신 포트에는 해당 서비스의 포트가 들어간다 (ex : HTTP = 80, HTTPS = 443)
- Sequence Number
- 세그먼트 가장 앞에 붙는 연속된 데이터 번호
- 데이터를 보낼 때 중복된 데이터를 폐기하거나 순서를 재배치할 때 사용
- Acknowledgment Number
- 상대방으로 부터 받아야하는 다음 TCP 세그먼트 번호
- 세션을 수립할 때 송신자가 보낸 SYN Flag를 잘받았다고 SYN 번호에 +1을 해서 ACK Number을 보낸다
- Offset
- 데이터의 시작 위치를 알려준다, TCP 헤더의 크기 값
- Reserved
- 예약된 필드
- Flag(URG, ACK, PSH, RST, SYN, FIN)
- URG : 긴급한 데이터의 우선순위를 전달하는 플래그
- ACK : 패킷을 잘 받았다는 것을 전달하는 플래그
- PSH : 버퍼가 채워지기를 기다리지 않고 즉시 전달, 버퍼링 없이 7 Layer의 응용프르개램에게 바로 전달하는 플래그
- RST : 비정상적인 세션을 끊기 위해 연결을 재설정하는 플래그
- SYN : 통신 시작시 세션을 연결하기 위한 플래그
- FIN : 통신 종료를 위해 세션 연결을 종료시키기 위한 플래그
- Window Size
- 수신하고자 하는 윈도우의 크기를 알려주는 필드
- Checksum
- 오류 검출을 위해 사용되는 필드
- Urgent Pointer
- URG 플래그가 설정될 경우, 긴급한 데이터의 시작위치를 알려주는 필드
- TCP 3-Way Handshake(세션 성립)
- 세션 성립을 위해 클라이언트는 서버에게 SYN Flag 설정한 패킷을 보낸다
- Client : SYN_SENT / SERVER : Listening, SYN_RECEVIED
- 서버는 클라이언트의 SYN요청을 받고 응답하기 위해 SYN + ACK Flag 설정한 패킷을 전달한다
- Client : SYN_SENT / SERVER : SYN_RECEVIED
- 클라이언트는 서버의 ACK Flag 설정한 패킷을 전달하여 세션을 성립한다
- Client : ESTABLESHED / SERVER : ESTABLESHED
- 세션 성립을 위해 클라이언트는 서버에게 SYN Flag 설정한 패킷을 보낸다
- TCP 4-Way Handshake
- 클라이언트가 통신 종료를 위해 서버에게 FIN 플래그를 설정한 패킷을 보낸다
- Client : ESTABLESHED -> FIN_WAIT1 / Server : ESTABLESHED
- 서버는 클라이언트에게 응답으로 ACK 플래그를 설정한 패킷을 보내고 통신이 끝날 때까지 기다린다
- Client : FIN_WAIT 2 / Server : ESTABLESHED -> TIME_WAIT
- 서버가 통신이 끝나면 클라이언트에게 FIN 플래그를 설정한 패킷을 보낸다
- Client : TIME_WAIT / SERVER -> LAST_ACK
- 클라이언튼 서버에게 확인했다는 ACK 플래그 패킷을 보낸다
- CLIENT : CLOSED / SERVER -> CLOSED
- 클라이언트가 통신 종료를 위해 서버에게 FIN 플래그를 설정한 패킷을 보낸다
[아이콘 저작권]
디지털 아이콘 제작자: Muhammad_Usman - Flaticon
'모의해킹 공부 > 알아보기' 카테고리의 다른 글
파일 업로드(File Upload) 취약점 (0) | 2023.05.31 |
---|---|
보안 & 암호화 (0) | 2023.04.18 |