✔ 풋프린팅이 무엇인지
✔ 포트와 서비스의 관계 이해
✔ 다양한 포트 스캔 기술 이해 및 실행
풋프린팅에 대한 이해
풋프린팅 : 공격대상 정보를 모으는 방법 중 하나
사회 공학 기법 : 메모해둔 암호나 지인끼리 정보를 주고받는 것들을 이용한 해킹
해킹에 필요한 정보
- 침투하고자 하는 시스템의 사용자 계정
- 패스워드를 찾기 위한 계정을 사용하는 사람의 정보
- 게시판 이용
- 협력사, 계열사의 보안 조치 확인
※ 주의사항 : 공격 대상 사이트로 직접 접속 보다 유틸리티로 웹 사이트를 다운로드 후, 검색하는 것이 좋음
스캔 : 서비스를 제공하는 서버의 작동여부, 제공 서비스를 확인하기 위한 작업
Ping(핑) : 네트워크와 시스템이 정상작동하는지 확인하기 위한 간단한 유틸리티, ICMP, TCP 사용
ICMP 스캔
ICMP를 이용해 공격 대상 시스템의 활성화 여부를 알아보는 방법
1) Echo Request(8)와 Echo Reply(0) 이용하기
2) Timestamp Request(13)와 Timestamp Reply(14) 이용하기
3) Information Request(15)와 Information Reply(16) 이용하기
4) ICMP Address Mask Request(17)와 ICMP Address Mask Reply(18) 이용하기
→ 가장 일반적인 방법은 1번이다.
→ 운영체제별 TTL값이 다르다.
ICMP Echo Request패킷이 막혔을 때 이용할 수 있는 방법
1) Timestamp Request패킷 이용
2) Information Request패킷 이용
3) ICMP Address Mask Request와 Reply패킷을 이용
→ ICMP를 이용한 ping은 시스템 하나를 조사하기에 적절하다.
TCP와 UDP를 이용한 스캔
TCP Open 스캔 (기록남음)
ㄴ TCP를 이용한 가장 기본적인 스캔
포트가 열린 경우 : SYN, SYN+ACK, ACK를 주고받음
포트가 닫힌 경우 : SYN, RST+ACK를 주고받음
스텔스(Stealth) 스캔 (기록이 남지 않음)
ㄴ 로그를 남기지 않는 것만이 아닌, 공격 대상을 속이고 자신의 위치를 숨기는 스캔 모두를 칭함
ㄴ 대표적으로 TCP Half Open스캔이 있음
포트가 열린 경우 : SYN, SYN+ACK, RST를 주고받음
포트가 닫힌 경우 : SYN, RST+ACK를 주고받음
FIN(Finish)스캔 : 포트가 열린 경우 응답이 없고, 닫힌 경우 RST패킷이 돌아옴
NULL 스캔 : 플래그 값을 설정하기 않고 보낸 패킷
XMAS 스캔 : ACK, FIN, RST, SYN, URG플래그 모두를 설정하여 보낸 패킷
포트가 열린 경우 : FIN+NULL+XMAS를 보냄 (아무 응답 없음)
포트가 닫힌 경우 : FIN+NULL+XMAS를 보냄, RST돌아옴
ACK패킷을 이용한 스캔
ㄴ 모든 포트에 ACK패킷을 보낸 후 이에 대한 RST패킷을 받아 분석
ㄴ 열린포트 경우 TTL값이 64이하인 RST패킷 ,윈도우가 0이 아닌 임의의 값을 가진 RST패킷이 돌아옴
(닫힌 경우 TTL값이 일정하게 큰 값이며, 윈도우 크기가 0인 RST패킷)
TCP패킷을 이용한 스캔
ㄴ 모든 시스템에 동일하게 적용되지 않으며, 많이 알려져서 거의 적용되지 않음
ㄴ SYN패킷을 이용한 스캔 방법은 세션을 성립하기 위한 정당한 패킷과 구별할 수 없기 때문에 아직도 유효하며, 아주 효과적
TCP단편화 (데이터를 나눔)
- 크기가 20바이트인 헤더를 패킷 두 개로 나누어 보냄
(첫번째 패킷은 송수신지 IP, 두번째 패킷에는 스캔하려는 포트 번호)
- 첫번째 패킷은 TCP포트 정보가 없어 방화벽 통과, 두번째 패킷은 송수신지 주소가 없어 방화벽 통과
시간차를 이용한 스캔
- 아주 짧은 시간동안 많은 패킷을 보내는 방법 : 방화벽과 IDS처리 용량의 한계를 넘기는 방법
- 아주 긴 시간 동안 패킷을 보내는 방법
시간차에 의한 공격 구분 Paranoid : 5분이나 10분 간격으로 패킷을 하나씩 보냄 Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위로 패킷을 보냄 Polite : 패킷을 0.4초 단위로 보냄 Normal : 정상적인 경우 Aggressive : 호스트에 대한 최대 타임아웃은 5분, 패킷당 1.25초까지 응답을 기다림 Insane : 호스트에 대한 최대 타임아웃은 75초, 패킷당 0.3초까지 응답을 기다림 방화벽과 IDS의 네트워크 카드가 100Mbps이상이 아니면 탐지하지 못함. |
FTP 바운스 스캔
- 취약한 FTP서버에서 PORT명령어를 통해 다른 시스템의 포트 활성화 여부를 확인
UDP스캔
ㄴ 포트가 닫힌 경우 공격 대상이 ICMP Unreachable패킷을 보내지만, 열린 경우에느 보내지 않음(신뢰성이 떨어짐)
포트가 열린 경우 : UDP를 보냄(아무 응답 없음)
포트가 닫힌 경우 : UDP를 보냄, ICMP Unreachable패킷을 받음
배너 그래빙(Banner Grabbing)
- 상대 시스템의 운영체제를 확인하는 가장 기본적인 방법
- 텔넷처럼 원격지 시스템에 로그인을 하면 뜨는 안내문과 비슷한 배너를 확인하는 기술
↓아래와 같은 화면이 배너이다.
FTP에 대해 배너그래빙 하기
#telnet 192.168.0.2 21
#ftp 192.168.0.2
SMTP PORT에 대해 배너그래빙 하기
25 SMTP 22 SSH 110 POP3 143 IMAP
TCP/IP 반응 살펴보기 [그냥 보기만 해도 된다고 하셨다.]
FIN 스캔 이용 : 적용되는 운영체제는 윈도우, BSD, Cisco, IRIS 등
세션 연결시 TCP패킷의 시퀀스 넘버 생성을 관찰
- 윈도우 : 시간에 따른 시퀀스 넘버 생성
- 리눅스 : 완전한 랜덤
- FreeBSD, Digital-Unix, IRIX, 솔라리스 : 시간에 따른 랜덤한 증분
방화벽
- 침입자를 차단하는 1차 방어선
- 접속에 대한 허용과 차단을 결정 (IP, Port)
- 침입 참지 시스템 : 방화벽이 막을 수 없거나 차단에 실패한 공격을 탐지하여 관리자에게 알려주는 역할
방화벽 탐지
- 방화벽 설치 여부를 알 수 있는 가장 쉬운 방법 : traceroute
- traceroute를 실행 시 *만으로 표시되는 곳이 라우팅에서 필터링 해주거나 방화벽이 존재하는 것
Firewalk : 방화벽의 ASL을 알아내는 방법
Firewalk의 원리
- 방화벽이 탐지되면 방화벽까지의 TTL보다 1만큼 더 큰 TTL값을 생성하여 보냄
- 방화벽이 패킷을 차단할 경우, 아무 패킷도 돌아오지 않음
- 방화벽이 패킷을 그대로 보내면 패킷은 다음 라우터에서 사라지고 러우터는 traceroute과정처럼 ICMP Time Exceeded메시지 여부를 받은 포트에 대해 열린 포트임을 추측할 수 있음
SNMP : 중앙 집중적인 관리 툴의 표준 프로토콜
구성 요소
- 관리 시스템과 관리 대상으로 나뉨
- 에이전트의 구성
SNMP : 전송 프로토콜
MIB : 관리할 개체의 집합 //관리자가 조회, 설정할 수 있는 개체들의 DB
SMI : 관리 방법 //표준에 적합한 MIB를 생성하고 관리하는 기준
- 관리 시스템과 에이전트 통신의 최소 일치 사항 (버전, 커뮤니티, PDU타입)
(PDU 타입)
- (0)Get Request : 관리 시스템이 특정 변수 값을 읽음.
- (1)Get Next Request : 관리 시스템이 이미 요청한 변수 다음의 변수 값을 요청
- (2)Set Request : 관리 시스템이 특정 변수 값의 변경을 요청
- (3)Get Response : 에이전트가 관리 시스템에 해당 변수 값을 전송
- (4)Trap : 에이전트의 특정 상황을 관리 시스템에 알림.
SNMP의 취약점
- 기본적으로 누구라도 SNMP의 MIB정보를 볼 수 있다.
- 패킷이 UDP로 전송되어 연결의 신뢰도가 낮다.
- 데이터가 암호화되지 않은 평문으로 전송되어 스니핑이 가능하다.
SNMP로 얻을 수 있는 정보(윈도우 시스템)
- System MIB : 호스트 이름, 설치된 운영체제 버전, 마지막 부팅 시간 등
- Interfaces : 논리적인 인터페이스인 루프백과 실제 인터페이스 스위치의 경우 다수의 인터페이스에 대한 사항을 하나씩 모두 확인 가능
- Shared Printers : 공유된 프린터 확인
- Services : 스캔한 시스템에서 운용하고 있는 서비스 목록 확인
- Accounts : 사용 계정을 확인
- Shares : 공유 자원 확인
- TCP/IP Networks : 연결된 네트워크 목록 확인
- Routes : 시스템의 라우팅 테이블 확인
- UDP Services : 제공하고 있는 UDP서비스 확인
- TCP Connections : 스캔한 시스템의 현재 TCP세션과 열린 포트를 확인
SNMP 보안 대책
- SNMP 불필요시 SNMP사용을 막음(일반적으로는 막혀있음)
- SNMP를 사용해야 할 경우 커뮤니티를 패스워드처럼 복잡하게 설정
- 패킷을 주고받을 호스트르르 설정하여 SNMP를 사용할 시스템의 IP 등록