정처기에서는 대부분 웹 서비스를 다룬다.
웹에 홈페이지, 플랫폼과 같은 서비스를 제공하는 것은 소프트웨어를 사용하는 것이다.
이 때문에 프로그래밍 언어에서 자바를 다룬다.
자바는 냉장고와 같은 전자제품을 다루기 위해 사용된 언어이지만, 이게 웹에 찰떡 같다고 한다.
웹 서비스를 구성하는 것과 만드는 방벙과 관련된 내용은 다음에 하기로 하자.
오늘은 소프트웨어 개발 보안 구척에 대한 내용을 다룰 것이다.
소프웨어 개발 보안 구축
생명주기랑 똑같이 SW 개발 보안 생명주기가 있다.
외우고 지나갈 부분은 아니라서 Pass
보안 구성 요소
보안 구성 요소는 알아 둘만하다.
보안의 3대 요소
기밀성(Confidentialty) : 인가 되지 않은 개인과 시스템이 접근하면 정보를 공개하거나 노출하지 않아야한다.
즉, 개인 정보나 중요한 데이터가 무단으로 공개되는 것을 방지해야한다.
무결성(Intergrity) : 데이터를 주관하는 쪽이 아니면, 무단으로 변경, 변조 할 수 없게 해야한다.
데이터가 전송되거나 저장될 때 무단으로 수저오디는 것을 방지해야한다.
가용성(Availability) : 권한을 가진 사용자나 애플리케이션이 원하느 서비스를 지속적으로 사용해야한다.
서비스에 장애가 발생하지 않고 끊김없이 받을 수 있어야한다.
이해를 위한 팁. 정처기를 준비하면 비슷한 용어들의 반복이 많을 것이다.
DOS 공격이나 DDOS 공격은 가용성을 깨뜨리기 위한 방법이다.
무엇을 얻고자는 공격자의 마음이겠지만, 서비스를 이용을 불능을 만들어서 이득을 볼 수 있는 사람일 것이다.
아래 표는 관련 개념을 넣어둔 것이다. 함께 보면서 둘다 기억하는 것이 좋을 것 같다.
공격 기술 | 공격 방법 | 3대 요소 위배 사항 |
SYNflooding | TCP 핸드셰이크 연결 요청(SYN)를 과도하게 전송하여 네트워크 병목 현상 발생 | 가용성, 무결성 |
UDPflooding | UDP 패킷을 과도하게 전송하여 서비스 거부 | 가용성 |
Smurfing | ICMP 에코 요청을 다량으로 전송하여 네트워크 병목 현상 발생 | 가용성 |
Ping of Death | 이전에는 ICMP 패킷을 크게 만들어서 오류를 발생시키는 방식이었으나 현재는 거의 없는 공격 | 가용성 |
Land Attack | TCP 패킷을 사용하여 송신 및 수신 IP 주소와 포트 번호를 같게하여 해당 서비스에 응답 루프(loop)를 발생시킴 | 가용성, 무결성 |
Tear Drop | 임의의 데이터 패킷을 보내 무작위로 조각화하여 수신 호스트를 충돌시키는 공격 | 무결성, 가용성 |
Bonk/Boink | 서로 다른 두 호스트에 중복된 TCP/IP 패킷을 보내 충돌시키는 공격 | 가용성, 무결성 |
tip : 호스팅이 충돌한다는 것은?
호스팅이 충돌한다는 것은 호스팅 업체가 제공하는 서버 혹은 데이터 센터가 사용자의 요청을 처리하지 못하고 더 이상 동작하지 않는 상태가 되는 것을 의미합니다. 이러한 상황은 서버 자원의 한계를 초과하여 발생할 수 있습니다.
예를 들어, 하나의 서버에 다수의 웹사이트가 호스팅되어 있는 경우, 특정 웹사이트에서 발생한 대규모 트래픽이 서버 자원을 과도하게 사용할 경우, 다른 웹사이트들도 함께 서비스가 불가능해질 수 있습니다. 이렇게 서버가 다운되거나 서비스가 불가능한 상태가 되면, 웹사이트에 접근하려는 사용자들은 해당 웹사이트에 접속할 수 없게 됩니다.
호스팅 충돌은 시스템의 가용성을 감소시키고, 사용자 경험에 악영향을 미치며, 손실을 야기할 수 있습니다. 따라서, 호스팅 업체들은 이러한 상황을 방지하기 위해 서버 자원을 적절하게 분배하거나, 대규모 트래픽에 대한 대비책을 마련하는 등의 조치를 취하고 있습니다.
DOS(Denial of Service) : 서비스 이용을 불가하게 만드는 공격
DOS(Denial of Service)
시스템 자원을 부족하게 해서 원래 용도로 쓰지 못하게 하는 공격
syn flooding
- TCP의 구조적 문제를 이용하여 공격 - TCP가 3 way hand shake를 사용함
- SYN 패킷만을 보내 서버 동시 사용자 수를 늘림 SYN(전송제어 부호)SYN이오면 ack를 보내 잘 접속 됐다고 응답해줘야해서 반복 발송은 서버를 느리게 만듬
- 공격자가 ack를 발송하지 않는다
네트워크 통신을 하기 위해서 다양한 프로토콜이 필요함.
이 중 유명한 것은 IP와 TCP가 있음.
이 TCP는 3 way handshake(클라인트와 서버가 서로 주고 받는 응답)라는 방법을 사용하는데,
우리 서버에서 정보를 가져가기 위해선 연결이 되었다는 사전 검사같은 걸 하는데,
이때, 마지막 syn에 응답을 주지 않는 걸 말한다.
UDPflooding
tip: 패킷이란?
패킷(Packet)은 네트워크 상에서 데이터를 전송할 때, 일정한 크기로 분할된 작은 데이터 조각을 말합니다. 각 패킷은 출발지와 목적지의 IP 주소, 포트 번호, 데이터 전체 크기, 체크섬 등의 정보를 포함하고 있습니다.
포트(port) 번호란?
포트 번호는 특정 애플리케이션이나 서비스가 네트워크를 통해 통신할 때, 출발지와 목적지를 구분하는 데 사용됩니다. 포트 번호는 0부터 65535까지의 범위를 갖으며, 특정 포트 번호는 특정 프로토콜과 연관되어 있습니다. 예를 들어, HTTP 프로토콜에서는 보통 포트 번호 80이 사용되며, HTTPS 프로토콜에서는 포트 번호 443이 사용됩니다. 포트 번호를 이용하여 출발지와 목적지를 구분함으로써, 여러 애플리케이션이 동시에 네트워크를 사용할 수 있도록 해줍니다.
체크섬이란?
체크섬은 데이터의 무결성을 검증하기 위한 값입니다. 데이터 전송 시 발생할 수 있는 오류나 손실로 인해 데이터가 손상될 가능성이 있습니다. 이러한 문제를 해결하기 위해 데이터의 체크섬 값을 계산하여 전송하는 것으로, 수신측에서는 체크섬 값을 다시 계산하여 데이터의 무결성을 검증합니다. 체크섬은 데이터 전송 시 발생할 수 있는 오류나 손실로 인한 데이터의 무결성을 보장하는 데 중요한 역할을 합니다.
포트(port) 번호란?
대량의 UDP 패킷을 만들어 임의 포트에 전송, 응답 메시지( ICMP Destnaion Unreachable)을 생성하여 지속 자원 고갈하게 만드는 것.tip ICMP란?
ICMP는 네트워크의 상태 및 연결성을 모니터링하는 데 필요합니다. 예를 들어, ICMP는 네트워크의 지연 시간을 측정하고, 네트워크 장치들 간의 통신 오류를 감지하고, 경로 설정 과정에서 발생한 오류를 해결하는 데 사용됩니다. 또한, ICMP는 인터넷 프로토콜의 문제를 진단하는 데도 사용됩니다.
ICMP는 인터넷 프로토콜 스위트의 일부로서, 인터넷의 초기 구축 단계에서 개발되었습니다. 1981년에는 RFC 792 문서에서 ICMP의 기능과 구조가 상세히 정의되었습니다.
ICMP는 주로 네트워크 관리자나 네트워크 장비 제조업체 등에 의해 사용됩니다. 예를 들어, 네트워크 관리자는 ICMP를 이용하여 네트워크의 문제를 해결하고, 네트워크 장비 제조업체는 ICMP를 이용하여 제품의 성능을 개선하고, 사용자의 문제 해결을 지원합니다.
따라서, ICMP는 네트워크 상태 및 연결성을 모니터링하고, 네트워크 관리자나 네트워크 장비 제조업체 등에 의해 사용되며, 인터넷의 초기 구축 단계에서 개발되었습니다.
스머핑(Smurfing)
출발지의 주소를 공격 대상 IP로 설정 - 공격 대상의 권한이 있는 척하려고,
네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격
바운스 사이트라는 제 3의 사이트를 이용하여 공격함
ICMP echo request란?
ICMP Echo Request는 네트워크 상의 호스트들 간에 서로 접속이 잘 되는지를 확인하기 위한 신호입니다. 이는 일종의 '핑(Ping)'이라고 볼 수 있습니다. Echo Request 패킷은 대상 호스트로 전송되고, 대상 호스트는 이에 대한 응답으로 ICMP Echo Reply 패킷을 송신 호스트로 전송합니다.
브로드캐스팅이란?
Broadcast는 네트워크 상의 모든 호스트들에게 데이터를 전송하는 방법입니다.
즉, Broadcast로 전송된 데이터는 해당 네트워크 상에 존재하는 모든 호스트들에게 동시에 전달되는 것입니다.
Smurfing 공격에서는, 공격자가 대량의 ICMP Echo Request 패킷을 Broadcast로 전송하여, 네트워크 상의 모든 호스트들에게 해당 패킷을 전달하게 됩니다. 이 때, Broadcast 패킷은 네트워크 대역폭을 소모하면서 대량의 ICMP Echo Reply 패킷을 대상 시스템으로 전송하게 되는 원인이 됩니다.
죽음의 핑(DoP : Deth of ping)
- ping은 ICMP 패킷을 이야기 한다고 한다.
- 이 ICMP 패킷을 크~~게 보내서 핑(ping)이 높아지게하는 공격법이다.
- 큰 데이터를 보내면, 단편화가 발생하고 이게 재조합하면서 서버 컴퓨터에 부하가 일어난다.
Ping vs ICMP (ping과 ICMP 관계)
핑(Ping)은 컴퓨터 네트워크에서 호스트 간에 상태를 확인하기 위해 사용되는 도구입니다. 핑 명령은 한 컴퓨터에서 다른 컴퓨터로 ICMP(Internet Control Message Protocol) 패킷을 보내고, 이에 대한 응답 시간을 측정하여 네트워크의 상태를 확인할 수 있습니다. 핑을 사용하면 호스트 간의 연결 상태, 패킷 손실률, 지연 시간 등을 확인할 수 있어, 네트워크의 성능을 평가하거나 문제점을 파악하는 데 유용합니다.
랜드 어택(Land Attack)
출발지와 목적지를 동일한 패킷 주소로 만들어 보내는 방법
자기 혼자 묻고 응답하게 하는 공격법
궁금증 : 그럼, 스머핑에서 ip spooping을 하면 결국, 랜드어택과 같은거 아닌가?
해결 : 스머핑은 ICMP 프로토콜을 이용하여 대량의 응답 패킷을 생성하여 대역폭을 소모 시킴, 반면 랜드 어택은 자시 자신이 대량 트래픽을 생성하게 함. 그리고 TCP 연결 요청함.
티어 드롭(Tear Drop)
IP 패킷 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 문제를 발생시키는 방법
잘못된 패킷을 보내서 재조합할 때 시스템 기능을 마비시키는 방법
- IP 패킷은 여러개 패킷으로 분할됨 -> 잘못된 정보(Fragment) 재조합하다가 고장남
Bonk/boink
프로토콜의 오류 제어를 이요한 공격기법
패킷 재선송, 재조립 과부하 유발
bonk/boink
bonk : SIP 헤더 필드를 악용하여 SIP 서버를 다운
Boink: SIP URI (Uniform Resource Identifier)를 악용하여 SIP 서버를 공격하는 것으로, Bonk보다는 더 정교한 형태의 SIP 공격입니다
tip : SIP란?
SIP는 Session Initiation Protocol의 약자로, 인터넷 프로토콜(IP)을 기반으로 하는 멀티미디어 통신을 위한 프로토콜입니다.
Tear drop vs Bonk
Tear Drop 공격과 Bonk 공격은 모두 IP 패킷 조작을 통해 실행되는 공격입니다.
Tear Drop 공격은 IP 패킷을 조작하여 Fragment Offset 값을 부정확하게 설정하여 목표 시스템의 재조립 프로세스를 망가뜨립니다. 이로 인해 시스템이 다운될 수 있습니다.
반면에 Bonk 공격은 ICMP (Internet Control Message Protocol)를 이용하여 공격합니다. ICMP는 네트워크 상황을 모니터링하고, 네트워크 에러 메시지를 전송하며, 네트워크 상태를 보고하는 등의 역할을 합니다.
Bonk 공격은 ICMP 패킷을 조작하여 대상 시스템에 보내어 시스템의 임시 버퍼를 채우고 더 이상의 연결을 차단합니다. 이로 인해 시스템이 다운될 수 있습니다.
따라서, Tear Drop 공격과 Bonk 공격은 조작된 패킷을 이용한 공격이지만, 실행 방법과 공격 대상 등이 다릅니다.
DOS 공격 정리본
공격유형 | 대상 | 프로토콜 | 핵심 키워드 | 예방 방법 |
SYN Flooding | 서버 | TCP | SYN, ACK, TCP 3-way handshake, Backlog Queue, Half-open connection | TCP SYN Cookie, SYN flood protection, Increase Backlog Queue |
UDP Flooding | 서버 | UDP | UDP, Amplification, Reflection, DNS, NTP | UDP Flood Protection, Firewall Configuration |
ICMP Flooding | 서버 | ICMP | ICMP, Ping, Echo Request, Bandwidth Consumption | ICMP Flood Protection, Firewall Configuration |
Ping of Death | 호스트, 서버 | ICMP | ICMP, Ping, Oversized Packets, Fragmentation | Filter ICMP Echo Requests, Patch OS |
Land Attack | 호스트, 서버 | TCP, IP | IP, TCP, SYN, ACK, Source IP Address | Firewall Configuration, Patch OS |
Teardrop Attack | 호스트, 서버 | IP | IP, Fragmentation, Fragment Offset, Overlapping Fragments | Filter Fragmented Packets, Patch OS |
Bonk/Boink | 호스트, 서버, 통신 장비 | TCP, UDP, ICMP | TCP, UDP, ICMP, Oversized Packets | Firewall Configuration, Filter Oversized Packets |
'정보처리기사' 카테고리의 다른 글
[정처기 실기] 애플리케이션 공격 기법 - 이해와 암기 (0) | 2023.04.04 |
---|---|
[정보처리기사 실기] DDOS 공격 (0) | 2023.04.03 |
[정처기 실기] UML- 행위 다이어그램(Behavioral Diagram) 유스케이스, 시퀀스,커뮤니케이션, 상태, 활동, 상호작용, 타이밍 암기방법 (0) | 2023.03.29 |
[정처기 실기] UML - 구조적 다이어그램을 이해하고 외우는 방법 (0) | 2023.03.28 |
정보처리기사 실기- UML을 이해하고 외우는 방법 (0) | 2023.03.28 |
댓글