Internet Protocols & Service Denial
DoS/DDoS(Distributed Denial of Service) attack
- 많은 손상 기계의 botnet에서 동시에 엄청난 traffic을 보냄 (TCP, SYN 등을 통해)
- 시스템을 악의적으로 공격해 해당 시스템의 리소스를 부족하게 하여 정상적으로 사용하지 못하게 함 → 서비스/서버 중단 목적으로 특정 target 공격
BGP(Border Gateway Protocol) security → router가 경로를 찾을 수 있도록 하는 protocol
- Internet은 AS(autonomous system, 기본 단위) 집합으로 구성된 networks의 network
- router 역할: 동적으로 routing table update
- update는 인터넷의 신뢰성을 기반으로 하는데, 특수한 상황에서 허점 존재 가능
- 특수 상황: 최단 경로 검색을 ‘network prefix’에 의해 하는 경우
- BGP leaking 발생(prefix 정보 유출): 국가별 network infra 상황 따라 여러 국가들을 거쳐가면서… 많은 router들이 잘못된 route 알림.
- Google에서 나이지리아로 IP(Internet Provider)에 의해 전달
- (2008) Youtube가 Pakistan 정부의 검열로 false route를 알리면서 몇 시간동안 다운되는 사례
- (2010) China Telecom이 10만개의 invalid route를 홍보해 항상 중국 네트워크망을 거쳐가도록
- BGP security mechanism: RPKI(Resource Public Key Infrastructure)
- 경로의 무결성을 public key(서명 알고리즘)으로 인증
- “AS X announces IP address range Y” 인증
- 중간에 있는 공격자의 경로를 따라 경로 끝에 적절한 AS가 있는 악성 경로 알리는것 방지
DNS security - DNS는 domain 이름 → IP 주소로 변환하는 거대한 분산 시스템
- DNS Hijacking
- pharming: ISP에서 DNS server 해킹 → cleint들이 악성 웹사이트로 들어가도록 유도
- phising(잘못된 사이트 접속)과 비교 <목적/수단 차이>
- pharming: 해당 사이트가 공식적으로 운영중인 사이트의 도메인 자체를 공격자가 미리 준비한 가짜사이트로 중간에서 바꿔치기. ip 주소에 가짜사이트.
- 사용자가 할 수 있는 것이 없다. - 기본 DNS 확인 프로세스 조작하여 탐지 어려움
- 올바른 URL을 입력했다고 하더라도 도메인 사이트 자체를 바꿔치기하여 잘못된 서버/사이트로 접속… 공격자가 원하는 거짓정보로 response / traffic redirection
- (예시) 사용자의 컴퓨터가 호스트 파일을 변경하는 악성 코드에 감염되어 온라인 뱅킹 포털에 액세스하려고 하면 가짜 은행 웹사이트로 리디렉션
- phising: 그럴듯한 잘못된 domain 이름 또는 실수 유발.
- 사용자에게 접속 유도 - 주의를 기울이는 것만으로도 예방 가능
- (예시) PayPal에서 발송했다고 주장하는 이메일로 수신자에게 링크를 클릭하여 계정 정보를 확인하도록 요청
- 검열(censorship) 목적: 중간에 가로채어 DNS query들 redirect
- 공격자의 제어 하에 home router의 DNS server를 변경하는 js가 포함된 웹 페이지로 유도
- pharming: ISP에서 DNS server 해킹 → cleint들이 악성 웹사이트로 들어가도록 유도
- DNSSEC → DNS hijacking 방지
- DNSSEC: public key 기반 메커니즘, 응답 정보에 서명값 첨부하여 검증 후 ip 주소 보증
- DNS name record(query 대한 응답)에 암호화 digital 서명 추가
- 서명을 확인하여 authoritative server에서 기록이 나왔는지, 전송 중 변경되지 않았는지 확인
- denial-of-service 공격에 DNSSEC 자체가 남용되는 사례
- A가 B(서버) 공격, C에게 “B야, 이 질문에 대한 큰 답을 알려줄 수 있니?”
- 서명된 DNS 레코드가 훨씬 크다 → B의 IP 주소로부터 오는 것을 목적으로 하는 packet들을 DNS 서버들에 대량으로 전송, 그 packet들을 B라는 target에 response 폭격
- DNSSEC: public key 기반 메커니즘, 응답 정보에 서명값 첨부하여 검증 후 ip 주소 보증
- DNS-over-https(DoH): http에 암호화를 적용하여 보안성 향상
- https를 통해 DoH resolver로 암호화 - 암호화된 요청 및 응답
- 구글 크롬 등 많은 enterprise security products에서 DNS 모니터링
- 시스템이 작업의 부적절한 특정 domain에 접근하려는 시도 발견
- 악성 프로그램이 시스템 손상시킨 경우 command-and-control server에 연결하려고 할 때 발견
Packet Amplification(증폭)
- TCP 3-way handshake을 아래 2가지 방식으로 악용
A → B: SYN; my number is X A ← B: ACK; now X+1 SYN; my number is Y A → B: ACK; now Y+1 / matching 확인, talking 시작
- SYN flooding: 많은 SYN packet들을 보내고 아무 reply에 대해서도 ACK 보내지 않음.
- SYN을 쌓아놔서 새로운 연결 수립 못하게
- 방어 방법: SYN cookie - B가 X를 암호화한 버전을 Y로 전송(수신 SYN 복사본 보관X)
- SYN reflection: 다른 사람인척 요청을 보냄.
- A(공격자)가 C(피해자)라고 주장하는 packet 많이 보냄, B는 A가 아닌 C에게 답장 보냄.
그 외 서비스 거부 공격
- target에 packet들 보낼 감염 machine들 많이 준비
- botnet: 공격자에 의해 제어되는 많은 감염 machine들
- 대부분 CCTV 카메라 같은 IoT 기기들이 제일 많이 사용됨(공장에서 나온 default pwd 취약점), (ex: Mirai botnet)
- 동시에 대규모의 traffic을 target에 보내 비정상적 동작 유도
Malware
1가지 type이나 특성으로 특정되지 않는다.
- worm: 다른 시스템으로부터 자기 자신을 복제(replicate)하는 악의적 프로그램 ⇒ activate propagation
- virus: 다른 프로그램들에 자신의 코드를 복제, 감염(hook)시키는 악의적 프로그램 ⇒ passive propagation
- MS word 문서의 macros
- Trojan: 예상되지 않은 사용자에 의해 실행될 때 - back door에서 악의적
- RAT(Remote Access Trojan): root로 실행될 수도, 아닐 수도 있지만 원격 사용자가 실행 중인 장치에 접근할 수 있도록 하는 프로그램
- Trojan horse: 예상하지 않은 기능, 실제로 backdoor에서 비정상적
- Trapdoor/backdoor - 비인증 접근
- Rabbit - virus, worm 등에 의해 구현될 수 있는 exhaust system resource
- rootkit: 장치에 root로 설치되는 프로그램, 몰래 제3자가 제어할 수 있도록 함.
- ransomware: ransom(몸값)을 요구하기 위해 피해자의 파일을 lock up(encrypt)
- Botnet: 감염 machine들의 network
- bot: 감염 machine / 피해자는 감염 사실을 모른다.
- Botmaster가 botnet을 제어하는 방법
- P2P network
- IRC(Internet Relay Chat): 통신 channel 중 하나로, 대표적인 botnet들이 IRC 사용해 통신.
- Spam, DoS 공격, hashword cash cracking 등 사용
Malware는 어떻게 동작하는가? (Malware 구조)
- replication mechanism(dropper) - 어떻게 복제/유출?
- worm이 실행하는 동안 자기 자신 복사본 생성 (pwd 추측 또는 원격 코드 실행 취약성 이용)
- payload - 실제 data 공격 행위 규제
- 기밀 데이터 유출 / 데이터 암호화 후 ransom 요구 / 통과 traffic 감시 / 비트코인 채굴
방어 방안
antivirus software - 의심되는 코드를 어떻게 탐지할까?
(1) scanners - 감염된 것 같은 signature 찾기
- IoC(Indicator of Compromise) 찾기 - 특정 virus로부터 bytes의 string(pattern matching)
- 장점: known malware 찾는데 빠르고 효율적
- 단점:
unknownmalware 찾기 불가능
- (공격) Malware는 scanner가 사용된 것을 안다!
→ 어떻게 하면 scanner 기반의 탐지를 피할 수 있을까?: Virus 암호화- 서로 다른 복제본은 common ‘signature’가 없다.
- (방어) 암호화된 malware 탐지 방법?
: decryptor code를 scan.
서로 다른 signature 대신 decryptor 포함 여부를 signature로 사용- decryptor code는 암호화 X ← decryptor의 decryptor를 또 암호화하는 순환
- Polymorphic Malware - 원본 회귀 가능 / Polymorphism
- malware의 body가 암호화: 매번 서로 다른 K로 암호화
- decryptor code는 “morphed”(코드 순서 등 약간만 변경, tweak)
- 복제할 때마다 malware 변경하기 위해 decryptor signature을 숨김.
- malware = decryptor + encrypted body(by key)
- Metamorphic Malware - 완전히 변형(변이)시켜 원본 회귀
불가- 악성 코드가 시스템 감염시키기 전에 mutate(변이)
원칙적으로 scanner 기반 탐지 피할 수 있음. - Mutated malware는 항상 같은 기능 / 탐지를 다르게 피함(다른 서명)
- 악성 코드 해체 → 코드 랜덤 변형
- 악성 코드가 시스템 감염시키기 전에 mutate(변이)
(2) checksummers - “변경 사항” 탐지
- 원래 버전의 (hash 함수와 같은) checksum과 함께 시스템의 모든 authorized 실행 파일의 whitelist 유지 → 비교 후 파일이 변경되었으면 “감염”
- malware: checksummer가 사용하는 system call 감시, 검사가 완료될 때마다 탐지되지 않도록 함.
- 어떻게 변경 사항 탐지?
- hash 파일들 + hash 값 따로 저장 (whitelist)
- 주기적으로 hash값 다시 계산, 비교 → 변경되었으면 감염되었다고 판단
- 장점: 사실상 false negative가 없다. / 이전의 unknown malware도 탐지가능하다.
- 단점: 정상적인, 감염되지 않은 파일들도 종종 변경된다. / false alarms(false positives)가 많다. → 정상 동작도 공격으로 간주.
(3) anomaly detection - “normal”을 먼저 정의해야한다.(계속 변경될 수도)
- unusual, malware같은, 잠재적으로 악의적인 system monitoring
- unusual: 파일이 예상치 못한 방향으로 변경 / 시스템이 잘못 작동 / 예상치 못한 네트워크 활동 및 파일 접근
- 장점: unknown malware를 탐지할 수 있는 기회
- 단점: 효과를 증명하기 어려울 수도 있음 / 단독으로 사용하지 않고 scanner 기반 탐지 등 다른 방법과 결합해야 함
- ML 기술들을 해당 연구분야에 적극적으로 적용하고 있다.
Networking Tools for Monitoring - Firewall
Internet ↔ Firewall (access control) ↔ Internal network
- access control 기능: known malware 및 network
악용중지- 내부 네트워크에 들어갈/나갈 내용 결정
- indicators of compromise 모니터링
정해진 표준은 없고 어느 위치, 어떤 target인지 그 concept에 따라 다르다.
Firewall Classification → (where they operate on)
- packet filter: network layer(IP)
- circuit gateway: transport layer(TCP)
- application proxy: application layer
Packet filter
network layer에서 운영. packet의 header만 모니터링.
- 검사: source/dest IP 주소, source/dest port 번호, flag bit
- local packet만 나가고 foreign packet만 들어옴.
’known’ & bad IP 주소로부터 traffic 막음. - 장점: speed
- 단점
- IP 주소가 spoofing될 수 있음
- Port 번호는 종종 NAT 장치에서 서로 다른 machine을 구별하는데 사용 (NAT로만 구분하기는 어려움)
- IP 주소가 변경될 수 있기 때문에 blacklist를 유지하는 것이 어려움
대표적 공격: TCP ACK Scan
- 공격자가 firewall을 통해 열린 port scanning
- ACK bit 집합과 함께 packet 전송 - (이전 3-way handshake 없이)
- ACK packet이 packet filter firewall 통과 → 지속적 연결의 일부로 보임
해당 packet의 수신자가 보낸 RST
- ACK packet이 packet filter firewall 통과 → 지속적 연결의 일부로 보임
→ Stateful firewall (state monitoring) 통해 방어
Circuit Gateway
TCP에서 운영. packet filter에 state (monitoring) 추가 - 기존 packet filter 역할 모두 존재
- 각 TCP session에서 모든 packet 재조합 & 검사 / TCP connection 등 기억
- 장점: 진행중인 연결을 추적하여 TCP ACK scan 방지 가능
- 단점: application data를 볼 수 없어 packet이 가진 data 자체를 모름 / packet filtering보다 느림.
Application Proxy
proxy: 대신해서 작동하는 것
- 들어오는 application data 관찰
- 예시-1) 공격된 word file로부터 spam이나 macro 막는 mail filter
- 예시-2) 원하지 않은 content를 막거나 제거하는 web proxy
- Data를 전송하기 전에 안전한지 확인
- Great Firewall of China: 메일이나 웹 등에서 content 검열
- 장점: connection과 application data의 full view → 보안성 향상 / application layer에서 나쁜 data filtering
- 단점: 매우 느리다.
Networking Tools for Monitoring - IDS(Intrusion Detection Systems)
IDS란?
network에 설치되어 진행중인 공격이나 컴퓨터가 손상된 징후(sign) 찾는 networking device (네트워크 상에서 존재)
→ sysadmin에게 특정 machine 또는 subnet을 보라고 알려줌
- sign 예시
- IRC 채널 연결 또는 잘못된 DNS 이름 확인하려고 시도하는 시스템
- network 내부 machine에서 발생한 spam
Intrusion 탐지 방법
(1) misuse detection
- intruder가 가능한 행동 모델링 - 3일 연속 전체 현금 빼가는 banking system alarm / debugger 같은 도구를 갑자기 사용할 때 UNIX alarm
- 특정 공격의 알려진 특성인 signature 찾기 - data 명시(실행 가능 부분string) / behavior(나쁜 ip 주소 contacting)
- signal로서 여러 signature이 필요하고 결정을 내리기 위해 ML classifier 훈련 가능
(2) anomaly detection
- 공격자의 행동 라인에 대한
명확한 모델이 없다면 비정상적 행동 찾기- 이전에 보고되지 않은 공격 탐지
- normal을 정의하는 것은 어렵고, normal-ness는 변할 수 있다.
- 매우 천천히 훈련, ML 기술 사용
- 장점: unknown 공격 탐지 기회
- 단점
- 단독으로 사용할 수 없고 ‘misuse detection’과 함께 사용해야 한다.
- IDS 자체로는 공격에 취약
- 효과 충분히 증명 X. 공격 가능성에 대한 구체적 정보 부족.
Crypto protocols
TLS(Transport Layer Security) (← SSL: Secure Sockets Layer)
- 인터넷에서 정보를 암호화해서 송수신하는 규약/protocol
- Internet에서 안전한 transaction의 대부분에 사용
- SSL은 지금 거의 사용 X → 현존 서버들은 대부분 TLS 1.2 또는 1.3이 표준
- SSL 2.0(1995) → SSL 3.0(
2015)) → 1.3(2018~) ⇒ 버전이 많다.
TLS 1.0(1999) → 1.1 → 1.2(2008
- SSL 2.0(1995) → SSL 3.0(
- TLS v/s HTTPS
- TLS는 HTTPS보다 범위가 넓고 / SMTP, FPT 같은 다른 protocol과 결합되어 보안성 향상시킴
- HTTPS는 HTTP + 보안성
- 지원하는 architecture: CA(Certificate Authority) & PKI(Public Key Infrastructure)
- CA: public key를 발행하고 보증
- PKI: 디지털 인증의 생성, 관리, 배포 등 public key 암호화 관리에 쓰이는 시스템
- (예시) amazon.com에서 책 사기 위해 보장돼야 할 것들
- authentication: ‘너’임을 증명
- confidentiality / integrity: 신용카드 정보 보호
Security at the transport level
- 보호하는 data: 브라우저가 load하려는 웹페이지 / 모바일 app에서 보여지는 data
- transport level에서의 security requirements
- confidentiality: client, server끼리만 교환된 data 읽을 수 있도록 보장
- integrity: 데이터 통신 오류 또는 공격자의 데이터 조작 시도 탐지
- authentication: 통신의 반대편에 누가 있나
TLS Handshake
message 보호를 위한 Hybrid Cryptosystem 기반 → 둘다 사용
- 비밀 공유를 위한 public key crypto (느리다)
- 교환되는 data 암호화를 위한 symmetric key crypto (빠르다) - 키 분배는 어렵다…
3가지 main concepts
- Cipher Suite negotiation - 안전한 소통 위한 protocol version, cipher suit 정하기 (protocol, 암호화 알고리즘)
- Authentication - 메시지의 의도된 수신자와 연결 설정하고 있는지 확인
- Key Exchange - TLS 연결이 설정된 후 symmetric encryption에 사용할 session key 도출
Simplified Protocol → 연결 수립, 인증 X
- session key가 public key로 암호화 → B만 복호화 가능
- session key: 앞으로 연결에 사용할 대칭 K, session마다 재생성
- A는 상대가 B인 것을 직접 알 수는 없지만, certificate은 가능
- B는 상대가 A인 것을 알 수 없다. → 연결만 수립하면 되므로 서버 입장에서 중요X
- hashing: 지금까지 교환된 data가 같은 page에서 이루어졌음을 보장하기 위해
- 1️⃣ 지점: 브라우저의 CA list(CA별 인증서) → B를 인증하는 CA에 B의 PK 물어봄 → 인증서 확인
Cipher Suite negotiation
cipher suite: cryptographic 함수와 기술의 collection ⇒ 4가지 구성
- Key Exchange algorithms: C↔S key 생성
- Authentication Algorithms: 비대칭 crypto/certificate (디지털 서명)
- Data Encryption Algorithms: 암호화/복호화 - Block(AES, DES)…
- Data Integrity Algorithms: SHA - 데이터 오류, 변조 시도 감지 (hash)
Authentication
디지털 서명(digital signature)의 2가지 type 기반
- RSA: Key exchange(TLS 1.2만, 그 이후부터는 안전성 고려해 사용X)와 signature 모두를 위해
- ECDSA: elliptic curve cryptography를 사용한 DSA(Digital Signature Algorithm)의 변형
- RSA나 ECDSA 중 선택 → Certificate 사용
- (전체 handshake 실패 시) S가 올바른 private key를 소유하여 pre-master secret을 해독하여 성공적으로 사용할 수 있도록 보장
- ECC key size : RSA key size ⇒ (160/1024) (224/2048)
Key Exchange
- RSA Key Exchange (TLS 1.3부터 제거)
- C가 S의 certificate를 CA의 public key로 인증 → C가 pre-master secret 준비 & 서버 certificate의 RSA public key로 암호화 → S가 key 교환 수신하고 RSA private key를 사용하여 암호 해독 → pre-master secret 공유
- PFS(Perfect Forward Secrecy) 부족
- 공격자가 암호문 record 해놓았다가 나중에 공유 key 알게됐을 때 메시지 복호화 가능 → 나중에 복호화하지 못하게 매번 session key update하자!(Ephermeral Diffie-Hellman)
- DH Key Exchange
- 각각의 private key를 상대의 public 부분과 결합하여 동일한 pre-master 값 도출 → pre-master을 공유하여 동일한 key 도출 가능
- PFS 제공 - 각 session이 다른 공유값 생성하도록 Ephemeral
- TLS 1.3은 안전하다고 알려진 일부 고정 DH parameter들만 허용, Ephemeral mode만 허용.
- 가정
- C, S는 서로 합의된 방법에 따라 안전하게 비밀 공유해야 한다.
- pre-mater라는 값을 공유한 후 둘다 PRF(Pseudo Random Function)이나 HKDF(HMAC-based Key Derivative Function)을 사용하여 같은 key를 얻는다.
- ChangeCipherSpec: 기존 보호 체계 적용할 준비가 되었다
- Finished: handshake의 끝을 나타내는 1st 보호 message
TLS 1.2 v/s TLS 1.3
- 제거: 옛날 알고리즘과 암호문 지원 /
RSA key exchange→ DHE 또는 ECDHE만 사용하여 C와 S가 locally 계산 ⇒ FPS /block mode 암호문→ AEAD bulk 암호화(ex. AES256-GCM) - 감소: handshake에서 negotiation 수, cipher suite의 알고리즘 수
- 전체 handshake sign (1.2 개선사항) - 원래는 맨 처음 C가 S에 누군지 알릴 때 서명으로 인증 X
- 서명을 위한 추가적인 elliptic curve 제안 (EdDSA)
- zero-rdt: 옛날에 key 나누고 연결 끊긴 후 다시 만날 때 다시 key 나눌 필요 X ⇒ 편리하지만 보안성 측면에서 그렇게 좋지 않다.
TLS 1.3 특징
(1) 3개의 part로 나누고 pool 유지
→ 각각 하나씩 조합하여 cipher가 유지해야하는 알고리즘 조합 수를 늘리지 않아도 된다. (효율적)
Cipher : Key Exchange : Signatrue(Authentication)
(2) 전체 transcript signing
- 문제점: FREAK 취약점
Freak(Factoring attack on RSA-EXPORT Keys)
→ downgrade attack
- Key 길이가 짧을수록 취약 → 수출용 RSA 표준을 512-bit로 설정 → 오랫동안 유지해서 원래 암호화 방식보다 취약해진downgrade 공격
- Middle Man은 RSA의 취약점을 알고 있어 exhaustive key search로 공격
- supported ciphers가 있는 첫번째 message에도 sign하자! → 전체에 sign하자!
Supporting Architecture - CA & PKI
- CSR(Certificate Signing Request. 인증서 서명 요청) 생성 → Public & Private key pair → (SSL) 인증서
- CA와 SW firm을 set up → 브라우저에 public key embedding
- Security Agency는 (대상의 브라우저가 허용하는 Agency Public Key에 대한 인증서를, www.gmail.com에서 생성)하는 CA를 제어 가능
- 2011년 .google.com에 대한 인증서 이슈 - 신뢰하는 인증서를 가진 아무 브라우저에서나 Google
- Open PKI v/s Closed PKI
- open: 제 3의 기관이 인증, 신원 확인 후 Key값 나눠가진다.
- closed: 사내 등 알려진 기관에서만 인증 (on premise CA)
- Trust issue → 인증서 유효 기한 + 사용자 + 브라우저에서 root certificate 제거해도 재생성 가능한지(refresh)
- 인증서 유효성(certification revocation)
- CRL(Certificate Revocation List)을 CA로부터 다운로드 → (해결) 주기적 update
- 인증서 해지 공격
- 현재 사용중인 인증서가 만료된 건지 정상인지를 판단
- OCSP(Online Certificate Status Protocol) → online status checking 용도. 주기적으로 Update 할 필요 없고 온라인에서 바로 활용 가능 - 효율적
- 인증서 유효성(certification revocation)
'Security' 카테고리의 다른 글
AI Security (1) | 2024.06.19 |
---|---|
Security Protocols (0) | 2024.05.05 |
Authentication (0) | 2024.05.05 |
Cryptography(3) - Public Key Encryption & Digital Signatures (2) | 2024.05.05 |
Cryptography(2) - Stream cipher & Block cipher (1) | 2024.05.05 |