DNSSEC(DNS Security Extensions)
도메인 네임 시스템(DNS)이 갖고 있는 보안 취약점을 극복하기 위한 DNS 확장 표준 프로토콜로 DNS 응답 정보에 전자 서명 값을 첨부함으로써 위변조를 방지하고 무결성을 제공한다. 검증된 DNS 질의만 처리하므로 파밍(pharming)을 막을 수 있다.
구성요소
- DNSKEY: 도메인 존의 공개키 데이터를 저장하여 제공하기 위한 RR
- RRSIG: 존 안에 있는 RRSet에 대한 개인 키의 전자서명한 결과값을 갖는 RR
- DS: DNS 고유의 위임체계에 따라 보안 측면의 인증된 위임체계를 구성하기 위한 데이터를 저장
- NSEC: DNS 데이터 부재 인증을 위해 정의
+) DNS 캐시 포이즈닝
DNS 쿼리정보를 위/변조하는 공격수단이다.
공격자가 도메인에 대한 IP 주소를 조작한 후 사용자가 DNS 질의 시 악의적인 IP를 리턴해 의도하지 않은 사이트로 접속하도록 유도하는 공격이다.
스트림 암호 & 블록암호
스트림 암호
: 이진화된 평문 스트림과 이진 키 스트림을 비트 단위로 XOR 연산함으로써 암호문을 생성
: key를 확장해서(keystream) one-time pad처럼 사용
: 블록 암호화 방식보다 암호화 속도가 바르고 에러 전파 현상이 없지만 낮은 확산과 낮은 암호화 강도.
블록 암호
: 암복호화 연산을 수행하여 고정된 크기의 n비트 블록을 n비트 블록 단위로 변환하는 함수
: 높은 확산, 기밀성, 해시함수 등 다양한 장점이 있지만 느린 암호화, 에러전달 등의 단점을 가짐
: 페이스텔(Feistel) 블록구조와 SPN(Substiution-Permutation Network) 블록구조로 구분
- DES
: 평문블록 64비트를 두 개로 나누어 각 32비트 단위로 하여 같은 처리를 16회 반복
: 페이스텔(Feistel) 구조
- 3DES
: DES 암호화방식의 암호처리를 3중화하여 강화한 것.
- AES
: 2000년 미국정부에서 채택한 DES를 계승하게 된 암호규격
: 128비트의 블록길이, 128/192/256비트의 키 길이
: SPN 구조
- ECB
: 평문 블록을 암호한 것 = 암호화 블록
: 간단, 고속, 병렬 처리 가능
: 같은 평문 블록일 경우 같은 암호문이 생성
: 재전송 공격 가능
- CBC
: IV(Initialization Vector, 초기화 벡터) 사용
: 이전 블록 암호문과 XOR 연산 후 암호화
: 똑같은 평문이라도 IV로 인해 다른 암호문을 가질 수 있음
: [IV -> 평문 블록 1과 XOR -> 암호화 -> 암호블록1 -> 평문블록2와 XOR -> 암호화 -> 암호블록2 ->...]
- CFB
: IV(Initialization Vector, 초기화 벡터) 사용
: 이전 암호문을 암호화하여 평문과 XOR
: [IV-> 암호화 -> 평문블록1과 XOR -> 암호블록1 -> 암호화 -> 평문블록2와 XOR -> ...]
스캐닝
취약점 스캔 및 모의해킹에 필요한 정보를 얻기 위한 정보수집 기술이다.
포트스캐닝 종류
TCP Open Scan(TCP SYN/ACK Scan)
: TCP 연결 시 일어나는 3-Way handshacking을 탐지하는 기법
: 포트가 열려있을 경우 SYN을 전송하면 SYN/ACK을 응답. SYN/ACK 확인 의미로 다시 ACK을 전송
: 포트가 닫혀있을 경우 SYN을 전송 시 RST/ACK 응답
TCP Half-open(TCP SYN Scan)
: 완전한 세션을 성립하지 않고 SYN 패킷만을 이용하여 열린 포트를 확인하는 스캔 방법
: 공격자가 SYN패킷을 송신하고 SYN/ACK 패킷을 응답 시 RST 패킷을 보내 연결을 끊음.
: 포트가 닫혀잇을 경우 RST/ACK 응답
: *Stealth Scan
*Stealth Scan?
스캔하는 대상에 로그를 남기지 않고 스캐닝,
TCP half-open/TCP FIN/NULL/XMAS Scan 등
TCP FIN/NULL/XMAS Scan
: 스텔스 스캔
: 포트 오픈 시 응답이 없음
: 포트가 닫혀잇는 경우 RST 수신
UDP 포트 스캐닝
: UDP 프로토콜을 사용하는 타겟 시스템에서 사용중인 포트 정보를 수집
: 포트가 닫혀있을 경우 ICMP Port Unreachable 메시지가 되돌아옴
: 포트가 열려있을 경우 응답 없음
ICMP(Internet Control Message Protocol)
인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되며 IP패킷의 데이터부분에 캡슐화되어 송신 호스트에게 전달된다.
메시지
- Echo Request, Echo Reply: ping 프로그램에서 네트워크의 신뢰성을 검증하기 위하여 echo request 메시지를 전송하고, 이를 수신한 호스트에서는 echo reply를 전송해 응답
- Destination unreachabel: 수신 호스트가 존재하지 않거나 존재해도 필요한 프로토콜이나 포트 번호 등이 없어 수신 호스트에 접근 불가능
- Source Quench: 네트워크에 필요한 자원이 부족하여 패킷이 버려지는 경우
- Time Exceeded: 패킷의 TTL(Time To Live) 필드 값이 0이 되어 패킷이 버려진 경우에 주로 발생
ICMP 공격
- IP Spoofing: IP주소를 속여서 발생되는 ICMP로 공격
- LAND Attack: 공격자가 TCP 소스 및 타겟 정보를 동일하게 설정하는 Layer4 서비스 거부(DoS) 공격
- Ping of Death: 규정 크기 이상의 ICMP 패킷으로 시스템을 마비시키는 공격
- Smutf 공격: 희생자의 스푸핑된 원본 IP를 가진 수많은 ICMP 프로토콜 패킷들이 IP브로드캐스트 주소를 사용하여 컴퓨터로 브로드 캐스트하는 분산 서비스 거부 공격
SSL(Secure Socket Layer)
개방 환경에서클라이언트와 서버의 안전한 통신을 위해 넷스케이프사에서 개발되었으며 기밀성(대칭키 암호화 방식), 무결성(메시지 인증코드 MAC을 이용), 인증(공개키 인증서를 이용하여 서버-클라이언트 상호간 인증) 서비스를 제공한다. 암호화된 전송을 위해 RSA 공개키 알고리즘을 사용하며 X509 인증서를 지원한다.
443 포트를 사용하며 전송 계층과 응용계층 사이에 위치한다.
구성
- Handshacking: 양 종단간 보안 파라미터를 협상하는 프로토콜
- Change Cipher Spec: 양 종단간에 협상된 보안 파라미터를 사용 가능하게 적용하기 위한 프로토콜
- Alert: SSL 통신과정의 오류를 통보하는 프로토콜
- Record: 협상된 보안 파라미터를 이용해 실제 암호화/복호화, 무결성 검증 등을 수행
동작 과정
1. Client Hello
- 클라이언트의 SSL 버전, 암호 도구 목록(키 교환 및 인증 알고리즘, 대칭 암호 알고리즘, 해시 알고리즘 등), 세션 ID 등
2, Server Hello
- 사용할 SSL 버전, 암호 도구와 새롭게 생성된 세션 ID 정보 등 전달, 필요 시 서버의 인증서, 키 교환에 필요한 정보, 클라이언트 인증서 요청 메시를 전달
3. 서버 인증서 검증
4. 클라이언트 키 교환, 클라이언트 인증서 전달
5. 클라이언트 검증
6. Clinet "finished"
7. Server "finished"
8. 메시지 교환
참고 자료
https://cafe.naver.com/81th/50363
https://blog.naver.com/on21life/221311658516
https://siriusp.tistory.com/386
https://blog.naver.com/nahejae533/221480932040
https://blog.naver.com/ster098/221970795140
https://blog.naver.com/autumn666/221651881596
https://blog.naver.com/llhbum/221899395130
https://terms.naver.com/entry.nhn?docId=2271906&cid=51207&categoryId=51207
http://vnfmsehdy.blogspot.com/2016/08/27-vpn-ipsec-ssltls.html
'Security > Others' 카테고리의 다른 글
Compiler vs Interpreter (0) | 2020.10.14 |
---|---|
DDE 공격 (0) | 2020.06.01 |
정보보안기사 공부2 (0) | 2020.05.27 |
Shellcode(쉘코드) (1) | 2019.09.26 |
기본 용어 정리 (0) | 2019.07.10 |
Defensive Programming VS Offensive Programming (0) | 2019.07.10 |
제로데이 vs 원데이 vs 올데이 (0) | 2019.07.10 |
Bug Hunting (0) | 2019.07.10 |