침해사고 대응
SFTP (SSH File Transfer Protocol)
- 파일을 전송하기위한 보안 채널을 제공하는 보안 파일 전송 프로토콜
- Secure Shell 프로토콜의 일부
- 클라이언트와 서버간에 SSH 프로토콜에 의해 설정된 연결로 파일을 전송
- 데이터를 암호화해서 파일을 전송
Layer 2 : MAC 주소 통신
- MAC 주소는 모두 다르기 때문에 서로 간의 신뢰관계가 형성됩니다.
ARP : 네트워크에서 IP 주소를 MAC 주소로 변환하는 프로토콜
주로 IPv4 네트워크에서 사용되며, 데이터 링크 계층에서 호스트 간의 통신을 가능하게 합니다.
ARP Spoofing: MAC 주소를 기반 공격, 네트워크에서 ARP를 조작하여 데이터 전송을 가로채는 방식입니다.
Man-in-the-Middle Attack: 공격자가 게이트웨이 주소를 변경하여 패킷에 URL을 삽입하고, 이를 통해 데이터를 가로채거나 변조합니다. / 공격자가 두 당사자 간의 통신을 가로채고, 조작하거나 도청하는 공격 방식
Layer 3
BGP (Border Gateway Protocol) Hijacking:
네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격입니다.
응용 계층
DNS (Domain Name System):
TTL (Time to Live):
TTL이 짧으면 DNS 질의에 부하가 걸립니다.
TTL이 길면 DNS 질의가 줄어들어 서버에 가는 부하가 적습니다.
DNS Sinkhole: 악성 트래픽을 차단하기 위해 DNS 요청을 조작하여 가짜 IP 주소로 유도하는 기술입니다.
BGP 하이재킹 탐지
BGP 하이재킹을 탐지하기 위해서는 자신이 소유한 prefix보다 하나 작은 prefix를 모니터링해야 합니다.
BGP Hijacking
BGP(경계 게이트웨이 프로토콜)는 인터넷에서 서로 다른 네트워크, 즉 AS(자율 시스템) 간에 라우팅 정보를 교환하는 프로토콜입니다. 여기서 AS는 특정 조직이나 기업이 관리하는 IP 주소 대역을 의미합니다.
예상문제 BGP Hijacking 공격 대응 방안
- IP 대역에 맞지 않는 트래픽이 발생하는지 확인
- 갑자기 응답 패킷의 양이 변하는지 확인
- 잘못 연결되어 리다이렉트되는 트래픽이 있는지 등을 체크하면서 꾸준히 모니터링
- 또한, 특정한 대역만 허용하도록 하는 화이트리스트 사용
(화이트리스트: 특정한 IP 주소, 도메인, 또는 네트워크 대역만을 허용하여 접근을 제어하는 보안 메커니즘)
- 라우팅 정보의 무결성을 보장하는 인증서를 발행하여 통신의 신뢰성을 올리는 방법
복원력 resilience
- 복원성 있는 네트워크는 주어진 권한을 벗어나는 행위를 빠르게 식별하고 이러한 행위를 격리할 수 있어야 한다.
- 복원성 있는 네트워크는 통제 가능하도록 구성되어야 하며 이를 통해 잠재적 피해를 최소화할 수 있어야 한다.
Ex) 7.7 DDos 공격은 대응할 수 있는 장치가 구성되어 있지 않았다.
- 이때 가장 중요한 것은 탐지된 비정상 행위를 격리하되 비즈니스 연속성 보장을 위한 작업의 생존성을 보장하여야 한다.
제로트러스트
제로트러스트는 경계선 기반 방어체계의 한계를 극복하기 위해 구성됨
제로트러스트는 자산의 중요도를 따진다. 자산을 식별하고 가치를 매기는 것이 어렵다.
경계선 기반 방어쳬계의 완벽한 항복 선언 ( 경계선 기반 방어는 증가된 공격표면을 감당하지 못함)
why ? 경계선을 만들 수 없다, 다른회사들 소프트웨어 쓰는거, 클라우드 기반 등을 지켜야 하는데 경계선이 무한히 확장되었기 때문에 지킬 수가 없다. 그래서 좀 더 자른 경계를 만들어야 한다 그게 제로트러스트이다.
네트워크의 구조변화를 통한 네트워크 가시성 확보에서 시작 ( 방어 가능한 네트워크 )
2021년 제로트러스트 선언
누구도 믿지 않겠다는 것이다. 제로 트러스트 전략에 따르면 안전한 영역도 없고, 안전한 사용자도 없다. 내부인이라도 철저한 인증과 신원 확인을 거쳐야 한다. 네트워크를 사용할 수 있는 시스템과 정보 접근 권한도 최소화할 필요가 있다.
SDN (Software Defined Network), 오버랩 네트워크
SDN과 오버랩 네트워크는 현대의 IT 환경에서 중요한 역할을 하며, 네트워크 관리의 효율성을 높이고, 변화하는 비즈니스 요구에 신속하게 대응할 수 있게 해줍니다. 이러한 기술들은 특히 클라우드 컴퓨팅, 데이터 센터, 그리고 대규모 네트워크 환경에서 큰 주목을 받고 있습니다.
Root DNS
DNS의 역할: DNS(도메인 네임 시스템)는 도메인 이름을 IP 주소로 변환하여 인터넷에서의 통신을 가능하게 합니다.
DNS 서버의 종류: DNS 서버는 다양한 도메인 최상위 도메인(TLD)을 관리합니다. 예를 들어, .com, .net, .org 등의 도메인을 담당하는 DNS 서버가 있습니다.
13개의 DNS 서버
구성: 총 13개의 DNS 서버가 있으며, 이 서버들은 각각 특정 TLD를 관리합니다. 이들 서버는 고유한 IP 주소를 가지고 있으며, 도메인 네임에 대한 정보를 응답합니다.
책임 분담: 각 DNS 서버는 특정 도메인에 대한 요청을 처리합니다. 예를 들어:
.com TLD를 담당하는 DNS 서버
.net TLD를 담당하는 DNS 서버
.org TLD를 담당하는 DNS 서버
응답 주소: 각 DNS 서버는 해당 TLD에 대한 도메인 이름의 IP 주소를 응답할 수 있습니다. 이 주소는 로그에 기록된 IP 주소들로 나타납니다.
요약
DNS 서버: 총 13개, 각각 특정 TLD를 관리
TLD 종류: .com, .net, .org 등
기능: 도메인 이름을 IP 주소로 변환하여 응답
응답 주소: 각 DNS 서버는 고유한 IP 주소를 가지고 있으며, 해당 도메인에 대한 정보를 제공
** CCTLD는 "Country Code Top-Level Domain"의 약자로, 국가 또는 특정 지역에 대한 도메인 네임을 나타내는 최상위 도메인입니다.
DNS 프로세스 흐름
DNS 요청:
사용자가 PC에서 http://www.naver.com에 대한 DNS 요청을 합니다.
DNS 서버로 요청 전송:
PC는 설정된 DNS 서버(168.126.63.1)에 http://www.naver.com의 IP 주소를 요청합니다.
DNS 서버의 처리:
168.126.63.1 DNS 서버는 자신의 레코드에 해당 도메인 정보가 없으므로, 다른 DNS 서버(예: 루트 DNS 서버 또는 TLD DNS 서버)에 요청을 전달합니다.
응답 수신:
최종적으로, 해당 도메인에 대한 정보가 있는 DNS 서버에서 http://www.naver.com의 IP 주소를 찾아서 168.126.63.1 DNS 서버로 응답합니다.
PC로 응답 전달:
168.126.63.1 DNS 서버는 찾은 IP 주소를 PC로 다시 전달합니다. 이제 PC는 http://www.naver.com에 대한 IP 주소를 알고, 해당 웹사이트에 접근할 수 있습니다.
PC -> 설정된 DNS서버 -> Root DNS or TLD DNS server (IP GET) -> 설정된 DNS 서버 -> PC (사이트 접근)
Firewall(정책을 걸어서 끊는다) - > IDS (string기반 침입 탐지장치) - > IPS( IDS + active response ((TCP 통신을 reset 기반 통신차단 기법을 이용해 통신을 차단하는 장치)
패킷에는 타임스탬프가 없고 피캡에는 있다.
패킷:
일반적으로 패킷 자체에는 타임스탬프 정보가 포함되어 있지 않습니다. 패킷은 전송된 데이터의 기본 단위로, 수신 시각이나 생성 시각 같은 메타데이터를 포함하지 않습니다.
피캡 파일:
피캡 파일(.pcap 형식)은 네트워크 패킷을 캡처하여 저장하는 파일로, 각 패킷의 전송 시간 정보를 포함할 수 있습니다. 이 파일은 패킷 분석 도구(예: Wireshark)를 사용하여 열어볼 수 있습니다.
타임스탬프 옮기기
타임스탬프를 피캡 파일에 옮기는 작업은 다음과 같은 절차로 진행됩니다.
패킷 캡처:
네트워크 트래픽을 캡처하여 피캡 파일로 저장합니다. 이때 각 패킷의 수신 시각이 타임스탬프로 기록됩니다.
타임스탬프 추출:
피캡 파일에서 각 패킷의 타임스탬프를 추출합니다. 이를 위해 Wireshark와 같은 패킷 분석 도구를 사용할 수 있습니다.
타임스탬프 저장:
추출한 타임스탬프를 각 패킷에 대응하여 별도의 파일이나 데이터베이스에 저장할 수 있습니다. 이 데이터는 나중에 패킷 분석 시 유용하게 활용될 수 있습니다.
분석:
타임스탬프 정보를 활용하여 패킷의 전송 시간, 지연 시간, 패킷 손실 등을 분석할 수 있습니다.
1. 싱크홀(Sinkhole)
네트워크 보안에서 싱크홀은 악성 트래픽을 특정 서버로 유도하여 분석하거나 차단하는 기술입니다. 이를 통해 공격을 감지하고 방어할 수 있습니다.
2. 패킷에서 존을 바라보는 이유
존(Zone): 패킷의 특정 필드에서 "존" 정보를 확인하여 해당 패킷이 싱크홀과 관련이 있는지 판단할 수 있습니다. 이 정보는 패킷의 출처나 목적지를 분석하는 데 유용합니다.
3. IP TTL (Time to Live)
TTL 개념: TTL 값은 패킷이 네트워크에서 얼마나 오래 살아남을 수 있는지를 나타냅니다. 각 라우터를 통과할 때마다 TTL 값이 감소합니다.
윈도우 vs 리눅스:
윈도우: 기본 TTL 값은 64입니다.
리눅스: 기본 TTL 값은 127입니다.
마지막 0이 될 때: TTL 값이 0이 되면 패킷은 폐기됩니다. 따라서 TTL 값을 통해 패킷의 경로를 추적할 수 있습니다.
4. 3-Way Handshake
정의: TCP 연결을 설정하기 위한 과정으로, 다음과 같은 단계로 이루어집니다:
SYN: 클라이언트가 서버에 연결 요청을 보냅니다.
SYN-ACK: 서버가 클라이언트의 요청을 수락하고 응답합니다.
ACK: 클라이언트가 서버의 응답을 확인합니다.
에크(ACK): 이 단계에서 클라이언트와 서버 간의 연결이 완전히 설정됩니다.
5. HTTP Request
푸쉬(PUSH): 클라이언트가 서버에 데이터를 전송할 때 사용됩니다. 이때 HTTP 요청이 발생합니다.
6. DNS TTL
정의: DNS TTL은 캐시된 DNS 레코드가 얼마나 오랫동안 유지될지를 결정합니다. 이 값이 만료되면 DNS 서버는 해당 정보를 새로 요청해야 합니다.
7. 기타 용어
핑(PING): 네트워크 연결을 테스트하기 위해 ICMP 프로토콜을 사용하는 명령어입니다. 네트워크의 응답 시간을 측정하는 데 사용됩니다.
신(SYN): TCP 연결 요청을 나타내는 플래그입니다.
리셋(RST): TCP 연결을 강제로 종료할 때 사용되는 플래그입니다.
에크(ACK): 데이터가 성공적으로 수신되었음을 확인하는 플래그입니다.
2예상문제 DDOS
방어자 입장에서 당할 수 잇는 공격 3가지
- 대역폭 소진 공격 (100g 라우터에 200g들어오면 null routing 이라고 버림 --> 이는 서비스의 가용성을 저하시킵니다.)
부분차단
70G공격이 100g router에 들어오면 라우터에서 차단을 하고 쓰레기통으로 버리고 남은 통신은 정상적으로 전달이 된다.
대역폭소진공격에서 가용대역폭을 초과하는 공격이 들어오게 될 경우, 예를들어 20g공간에 30g가 들어오게 되면 라우터는 이 과부하를 처리할 수 없어 일부 트래픽을 차단하게 됩니다.
방어방법
대역폭소진공격은 가용성을 가지고 있는 상단에서만 막을 수 있다. // 우리나라 관문체계에서는 대역폭 소지기반 대응이 다 들어가있다.
- HTTP기반 공격 ( 클라이언트 ↔ 서버 관계에서)
HTTP 기반 공격은 클라이언트와 서버 간의 연결을 악용하여 서버의 자원을 소진시키거나 서비스 중단을 유발하는 공격
서버는 한 번에 처리할 수 있는 연결 수에 한계가 있습니다. 예를 들어, 초당 1,000번의 연결을 처리할 수 있는 서버가 있다고 가정할 때, 클라이언트가 초당 1,000번의 요청을 보내면 서버의 연결이 소진됩니다.
SYN Flood 공격:
공격자가 지속적으로 SYN 패킷을 전송하면 서버는 각 연결 요청에 대해 "SYN-ACK" 응답을 보냅니다. 이 과정에서 서버는 연결을 위한 리소스를 할당하게 되며, 이로 인해 서버의 자원이 고갈됩니다. 결국, 정상적인 클라이언트의 연결 요청을 처리할 수 없게 됩니다.
DDoS 공격:
공격자가 여러 클라이언트를 이용해 초당 하나씩 요청을 보내면, 서버의 연결 수를 소진시키는 DDoS(분산 서비스 거부) 공격이 발생할 수 있습니다. 이 경우, 공격자는 여러 IP 주소를 사용하여 서버의 자원을 고갈시키므로 방어가 더욱 어려워집니다.
3예상문제 방어방법
시그니처 기반 방어:
공격 패턴에 대한 시그니처를 설정하고, 이를 기반으로 비정상적인 트래픽을 필터링합니다. 이러한 방법은 자동으로 공격을 탐지하고 차단할 수 있는 효과적인 방법입니다.
대피소 동작:
대피소와 같은 시스템을 구축하여 공격이 발생했을 때 자동으로 대처할 수 있는 체계를 마련합니다. 이 체계는 공격을 감지하고, 필요한 경우 트래픽을 차단하거나 우회시킵니다.
프록시 및 DNS 변경:
방어를 위해 프록시 서버를 사용하고 DNS를 변경하는 방법이 있습니다. 이를 통해 공격 트래픽을 다른 서버로 우회시키고, 공격자의 IP 주소가 직접 서버에 도달하지 않도록 할 수 있습니다.
재방문 횟수 카운트:
공격자의 재방문 횟수를 카운트하여, 일정 횟수 이상 접속하는 IP 주소를 차단합니다. 이를 통해 공격자를 식별하고 차단할 수 있습니다.
- 국지적 DDoS 대역폭 소진 공격
DDoS 공격은 여러 대의 컴퓨터(봇넷)를 이용하여 특정 서버나 네트워크를 대상으로 대량의 트래픽을 발생시켜 서비스의 정상적인 운영을 방해하는 공격입니다. 국지적 DDoS 공격은 특정 지역이나 특정 네트워크에 집중된 공격을 의미합니다.
대역폭 소진:
100메가의 대역폭을 가진 네트워크에서는 공격이 명확하게 보이지만, 백지망(예: 서버의 대역폭이 매우 높은 경우)에서는 상대적으로 덜 보일 수 있습니다.
패킷 흐름:
공격자가 자신의 IP 주소(a.b.c.d)를 소스 IP로 설정하고, 피해자의 IP 주소(5.4.3.2)를 목표로 하여 DNS 쿼리를 보냅니다. 이때 패킷의 소스 포트와 목적지 포트가 53번(DNS 포트)인 경우, 해당 트래픽이 의심스러운 것으로 간주되어야 합니다.
*소스 포트가 53번인 경우, 이는 DNS 서버가 클라이언트로부터의 쿼리에 대한 응답을 보내고 있다는 것을 의미합니다. 그러나 공격자가 자신의 IP 주소를 위조하여 이러한 패킷을 전송하는 경우, 정상적인 DNS 쿼리와는 다른 비정상적인 트래픽 패턴이 발생할 수 있습니다.
방어 방법
트래픽 모니터링:
비정상적인 트래픽 패턴을 모니터링하고, 특히 DNS 쿼리에 대한 비정상적인 요청을 감지합니다. 소스 포트와 목적지 포트가 53번인 경우, 이를 즉시 차단하거나 추가 검토를 요청할 수 있습니다.
오픈 DNS 서버 제한:
공개 DNS 서버가 악용되지 않도록 설정을 강화합니다. 오픈 리커시브 DNS 서버의 사용을 최소화하고, 필요한 경우 IP 주소 필터링을 적용하여 접근을 제한합니다.
대역폭 관리:
네트워크의 대역폭을 관리하고, DDoS 공격 발생 시 자동으로 트래픽을 차단하거나 우회시키는 시스템을 구축합니다.
신속한 대응 체계 구축:
공격 발생 시 신속하게 대응할 수 있는 체계를 마련합니다. 예를 들어, 특정 패턴의 트래픽을 감지했을 때 자동으로 차단하거나 경고를 발생시키는 시스템이 필요합니다.
tshark: Wireshark의 명령줄 기반 패킷 분석 도구입니다.
ngrep: ngrep는 네트워크 패킷을 필터링하고 분석하는 데 사용하는 도구입니다. 일반적으로 패킷을 실시간으로 캡처하고 특정 패턴을 찾아 출력합니다.
*TLS(Transport Layer Security)는 인터넷 상에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜
(2) 주요통신기반시설 점검(기술)
1번문제 주요정보통신 기반시설을 점검할 수 있는 자 (아닌것은?)
한국인터넷진흥원 KISA
정보공유 분석센터,
정보보호 전문 서비스 기업 (정보보호 전문 서비스 기업은 SK쉴더스를 포함 총 28기업이 있다.)
한국전자통신연구원
주요정보통신 기반시설로 지정이 되어 있는 장소는 1년에 한번 취약점 진단을 꼭 받아야한다
제17조(취약점 분석 및 평가 시기) → 지정 후 6개월 이내에 분석을 해야함, 매년 취약점 분석 평가를 실시해야한다.
과학기술정보통신부고시 제2021-103호:
** 법률은 선택사항이 아닌 의무사항이다.
---
2번문제 보안위협에 대해 설명하고 이것을 제거하기 위해서 설정해야할 것은?
Session Timeout 설정 - 383
주기적으로 세션 체크를 해서 연결이 정상적인지 확인한다 .
Session Timeout 설정 (5분 이하 권고)
Session Timeout 설정 유무를 점검하여 터미널 접속 후 일정 시간(Session Timeout 지정 시간)이 지난 뒤 터미널 세션이 자동으로 종료되어 관리자의 부재(터미널 작업 중 자리 비움, 작업 완료 후 터미널 접속을 종료하지 않 음) 시 발생 가능한 비인가자의 터미널 접근 통제가 되는지 확인하기 위함
Session Timeout 정책이 적용되지 않았을 경우, 관리자 부재 시 비인가자가 네트워크 장비 터미널에 접속된 컴퓨터를 통해 네트워크 장비의 정책 변경 및 삭제 등의 행위를 할 수 있는 위험이 존재함
※ Session Timeout: 터미널 접속 후 유휴 상태 일 때 자동으로 터미널 접속을 종료하는 시간 설정
---
3번문제 SNMP(Simple Network Management Protocol) 서비스와 관련해서 라우터에 config 해야할 사항은?? - 387p
가장 좋은 방법은 사용을 안하는것
하지만 사용을 해야한다면, 보안을 해야 할 사항들 중 틀린것은?
-
Community String이 디폴트로 되어있는 것은 사용하면 안된다 ( 삭제해야함)
- 새롭게 Community String 을 생성해야하는데 복잡하게 생성을 해야함
-
Community String의 권한은 라이트 권한을 주어서는 안된다. (필요에 의해 사용을 할 수 있어도 기본적으로 라이트 권한은 안됌)
- SNMP를 통해서 장비에 접근할 수있는 아이피를 제한한다. access list를 통해 제한한다.
※ Community String: SNMP는 MIB라는 정보를 주고받기 위해 인증 과정에서 일종의 비밀번호인 'Community String'을 사용함
---
4번문제 스푸핑 방지를 위해 설정해야할 아이피 주소가 아닌것은? (객관식) - 397
■ 장비별 조치방법 예시 공통 특수 용도 주소 차단(RFC 6890 참조)
0.0.0.0/8 자체 네트워크(This host on this network, RFC1122)
10.0.0.0/8 사설 네트워크(Private-Use, RFC1918)
127.0.0.0/8 루프백(Loopback, RFC1122)
169.254.0.0/16 링크 로컬(Link Local, RFC3927)
172.16.0.0/12 사설 네트워크(Private-Use, RFC1918)
192.0.2.0/24 예제 등 문서에서 사용(TEST-NET-1, RFC5737)
192.168.0.0/16 사설 네트워크(Private-Use, RFC1918)
---
5번문제 Directed-broadcast 차단 - 434 (단답형 주관식)
Directed-broadcast 서비스 차단을 통해 DoS 공격을 방지하기 위함
Directed broadcast는 특정 서브넷에 있는 모든 호스트에게 데이터를 전송하는 방식입니다
예를 들어, 서브넷 마스크가 255.255.255.0인 경우, 192.168.1.0/24 서브넷의 브로드캐스트 주소는 192.168.1.255입니다. 이 주소로 전송하면 서브넷 내의 모든 호스트가 메시지를 수신합니다.
Directed broadcast는 네트워크 공격에 악용될 수 있으므로, 많은 네트워크에서 기본적으로 비활성화되어 있습니다.
스머프 공격 은 브로드캐스트
※ Smurf 공격: 인터넷 프로토콜(IP) 브로드캐스트나 기타 인터넷 운용 측면을 이용하여 인터넷망을 공격하는 행위로 브로드캐스트에 대한 응답받을 IP 주소를 변조하여 해당 IP 주소 호스트에 DoS 공격을 감행하는 공격 기법
브로드캐스트 아이피 특징 :
그쪽으로 핑을 보내면 이 범위 안에 있는 호스트들에게 다 뿌린다.
그래서 스머프 공격이라는 것은 내가 공격 대상자 소스 IP를 변조해서 브로드 캐스트 아이피로 핑을 보냄,
브로드캐스트 아이피가 같은 범위 안ㅇ ㅔ있는 호스트에게 request 를 보냄
→ 이것을 받은 호스트들이 공격 reply 를 공격자가 변조를 시킨 공격 대상 IP로 공격을 보냄
이것을 차단하기 위해서 차단해야 하는 항목은 무엇인가?
→ 다이렉트 브로드캐스트 차단.
(3) 네트워크 구조 및 보안
1 bite = 2^8 = 0 ~ 255
7계층 : URL
4계층 : port 주소 (어느 프로그램에게 가야 하는지를 알려줌) (2 bite)
TCP/UDP : 전송 계층 프로토콜
TCP : 신뢰성 o - 말한대로 전달한다
UDP: 신뢰성 x - 말한대로 전달하지 않는다
3계층 : IP (4 bite)
URL을 입력하면, 먼저 DNS(Domain Name System)에 쿼리를 보내 해당 도메인의 IP 주소를 조회합니다.
DNS 서버는 해당 도메인에 대한 IP 주소를 반환합니다. 이 IP 주소가 목적지 IP가 됩니다.
1,2계층 : MAC (6bite)
게이트웨이(처음만나는 라우터)의 IP 주소는 알고 있고 있지만, 난 MAC 주소를 알고 싶기때문에
ARP를 사용해서 브로드캐스팅 -> 해당 IP 주소를 가진 장치가 자신의 MAC 주소를 포함한 ARP 응답을 송신 장치에게 전송합니다.
ARP (Address resolution protocol) - IP를 MAC주소으로 변환
RARP - MAC주소를 IP으로 변환
- Gateway: 우리 PC가 인터넷 세상으로 나가기 위해서 처음 만나는 라우터(별명)
- routing table : 라우터를 키면 BGP protocol 을 이용해 routing table에 가는 길들을 다운받는다. 라우터는 포트가 4개가 있다.
- subnet mask: 네트워크에서 IP 주소를 서브넷으로 나누는 데 사용되는 값입니다 내 아이피 주소를 가지고 어디까지가 네트워크 주소인지를 판단할때 사용 ( 네트워크 주소와 호스트 주소 나눈 것을 판별하는 것)
- broadcast : 네트워크에서 특정 정보를 모든 장치에 동시에 전송하는 방식입니다.
- unicast :한 사람의 특정 수신자에게만 데이터 패킷을 전송하는 방식
인터네트워킹
라우터: 네트워크를 연결하는 장비이며, 일반적으로 3 네트워크 계층 기능을 수행
서브넷 마스크가 있기 떄문에 랜을 구별할 수 있다.
리피터 : 반복한다 / 랜이 너무 커서 10km가 되면 랜인 회선으로 연결되어있는데 전기신호가 10키로 동안 계속 가는건 저항이 생긴다 떄문에 중간 중간 리피터(증폭기)를 설치를 한다. - 요즘은 사용하지 않음
브릿지: 랜을 버츄얼하게 나누고 싶을때 사용 / 라우터의 랜을 가상으로 한 포트당 몇개씩 버츄얼 하게 하기 위해서 랜선 하나 따서 그 밑에 여러개를 묶는 것 - 요즘은 라우터 값이 싸져서 사용하지 않음
랜에서 시작하여 첫번째로 만나는 라우터를 게이트웨이라고함
라우터 설명할때는 3계층 밖에 없다 - 왜냐면, 인터넷 상에 있는 라우터들은 최종 목적지가 아니기 떄문에 네트워크 계층에서 반환되고 다시 물리적 계층으로 내려간다 (목적지 아이피 주소가 나인지 아닌지만 확인함)
전송 (4계층) - 신뢰성 또는 통신품질에 대해 배울 예정
오류 제어
- 전송 오류의 유형
화자가 이야기 한 것에 대해 청자가 바르게 알아 들어야한다.
- 수신(청자) 호스트의 응답 프레임
긍정응답프레임: 데이터가 정상적으로 도착했을때, 수신 호스트가 송신 호스트에게 회신
부정응답프레임: 데이터가 꺠져서 도착했을떄, 수신 호스트가 송신 호스트에게 회신
(부정 응답 프레임을 받은 송신 호스트는 재전송 기능으로 오류 복구 시도)
프레임 분실: 내가 말한 것이 통으로 없어진다. (저녁먹을래 → 저녁 … ? )
1) 송신호스트에서 프레임 분실
송신 호스트는 타임아웃 시간을 갖고 상대방의 응답을 기다리는 시간이 있음 / 타임아웃 시간이 지날때까지 응답이 없으면 데이터를 재전송한다.
송신 호스트는 내가 말한 것을 상대방이 알아들었는지 못알아들었는지 판단이 가능하다. )
2) 수신호스트에서 프레임 분실
송신 호스트에서 데이터를 전송하고 “수신 호스트”에서 긍정 응답을 주는 와중에도 데이터 손실이 발생할 수 있다. → 그럼 송신 호스트에서 데이터를 재전송한다.
순서 번호 (sequence number)
- 대화의 순서번호를 저장을 해둬야한다.
송신호스트가 대화를 수신호스트에게 했는데, 수신호스트가 긍정응답을 하는 중 프레임분실이 일어난다면, 송신 호스트는 일정 시간 타임아웃을 주고 기다리다가 다시 재전송을 한다.
만약 순서번호가 없으면 데이터의 중복이 발생한다. (금전적으로 보면 돈을 두번 보내는 꼴)
전송 오류의 유형
- 수신 호스트의 응답 프레임
부정 응답 프레임을 받은 송신 호스트는 재전송 기능으로 오류 복구 시도
송신 호스트의 타이머 기능
- 데이터 분실시 수신호스트로부터 어떠한 응답프레임도 발생하지 않음 → 송신 호스트는 일정 시간동안 응답 프레임이 없으면 타임아웃 기능으로 재전송을 시도
순서번호의 기능
수신호스트가 중복 프레임을 구분 할 수 있도록 지원
흐름제어
- 수신 호스트가 감당할 수 있는 속도로 송신 호스트가 데이터를 전송하도록 제어를 해야한다.
- 너무 빨리 전송하는 경우
수신 호스트가 내부 버퍼에 보관하지 못할 수 있음 -> 이는 프레임 분실과 동일한 효과를 야기함
내가 상대방한테 데이터를 줄때 상대방이 받는 응답의 속도에 맞춰서 흐름 제어를 한다. (슬라이딩 윈도우 프로토콜)
1, 2 계층 프로토콜
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
이더넷 =( LAN = MAC = 1,2 계층 = 물리적) 모두 같은말이다.
Dummy HUB : 인터넷을 공유한다 (BUS 구조로 되어있음)
스위칭 HUB : 나만 연결한다 - > 속도가 더미허브에 비해 빠름
MA(Multiple Access): 다수 호스트가 하나의 공유 매체에 연결됨
CS(Carrie Sense): 호스트는 공유 매체의 사용 가능 여부를 신호 감지로 확인
CD(Collision Detection): 공유 매체에서 데이터 충돌 여부 확인
공유매체(LAN)의 길이가 길면 길수록 전송 지연이 증가하여 충돌가능성이 높아진다.
--------
1,2 계층 = 프레임 (3 계층에서 내려온 데이터 + 헤더를 칭함)
3 계층 = 패킷 (4 계층에서 내려온 데이터 + 헤더를 칭함)
4 계층 = TCP 세그먼트 / UDP 데이터그램 (위에서 내려온 데이터 + 헤더를 칭함)
---------
1,2 계층 헤더 크기는 14byte
3계층 헤더 크기 20byte
4계층 헤드 크기 20byte
-------
0-1500바이트까지 데이터를 담을 수 있다
패킷의 최대사이즈 1500바이트 (그림에서 Data 부분)
패킷의 최대사이즈는 1500을 넘을 수 없다. 하지만 어느날 데이터가 1600이 되어 있으면 ‘비정상’적 이기 때문에 잡아내면 된다.
8비트 = 1바이트
헤더의 구성
목적지 맥주소 6byte + 소스 맥주소 6byte + type 2byte (length)
= 물리계층의 총 헤더의 길이는 14byte이다.
헤더 뒤에는 패킷이 따라옴
type(Length) 이 0x0800 (숫자 하나 하나가 16진수)이면 IP에게데이터를 줘야한다.
16진수는 2^4이기때문에 = 4비트이다.
‘영’ 4비트 ‘팔’4비트 ‘영’4비트 ‘영’4비트
8비트+ 8비트 = 2바이트
Type(Length): 내께 맞으면 데이터를 위로 올려야하는데 OS단에는 stack, IP .. 여러개가 있는데 누구한테 줘야하는지 정해준다. (포트 역할)
preamble : 데이터가 가기 전에 미리 알려주는 것 = (수신 호스트가 송신 호스트의 블록 동기를 맞추는 용도)
start delimiter : 1바이트 쉬고 데이터를 보내준다 = 프레임의 시작
traller: LAN 카드는 OS에 영향을 받을 수 밖에 없는다 OS에는 64비트, 32비트 설정하는게 있다. 이런것은 bus의 단위를 말함. CPU하고 죽은 기기를 통신할때 1비트씩 보내는게 아닌 64비트는 64를 한번에 보낸다. 만약 버스가 있다고 하면 64의 배수가 되어야 한다. 그럼 데이터를 맞추기 위해 PAD 를 통해 0000000을 집어넣어 64틀에 딱 맞춰서 보낸다.
checksum : 무결성값을 보낸다 // 앞에서 계산한 checksum 과 뒤에서 계산한 checksum값을 비교한다. 값이 다르면 랜카드는 폐기를 한다.
3계층 네트워크 계층의 기능
서비스의 종류
- 연결형: 종이컵 2개에 실을 연결해서 대화를 하듯 연결을 하는 것
- 비연결형 서비스: 데이터나 경로가 미리 정해져있지않음 (데이터가 가는데 주소만 간다) - 주소만 가지고 가까운 길로 간다.
(비연결형 서비스)
- 패킷(데이터와 헤더가 합쳐짐)이 IP주소(네트워크계층이니까) 를 가지고 서로 다른 경로로 전송되므로 도착 순서가 일정하지 않는다. -> 그래서 상위 계층(4 전송계층)에서 순서를 재조정해야한다.
IP계층의 핵심목적은 정보가 깨지는 걸 신경쓰는게 아니라 빨리 보내는 것.
- 그렇기에, 패킷 분실 가능성이 있다
- 패킷의 100% 도착을 보장하지 않는다.
- 상위 계층에서 패킷 분실 오류를 복구해야한다.
IP 프로토콜
IP 프로토콜은 비연결형이다 = 품질을 보장하지않는다 (쿠팡맨은 보내면 끝이고 상위계층 쿠팡에서 물건을 보상해줌)
TCP 는 연결형 프로토콜(그래서 신뢰성 보장)
패킷을 분할/병합하는 기능을 수행한다.
IP 헤더는 32비트이다 = 32비트 = 4 바이트
0 ~ 31
5층으로 나누어져 있어서 4+4+4+4+4 = 총 20바이트임
맨 밑에 계층은 요즘엔 쓰지 않아 빼고 계산
반 바이트 = 버전 넘버
Ipv4 = 4byte
Ipv6 = 6byte
읽는방법 : 각 층이 끝나면 왼쪽 으로 돌아감
version number : 우리는 ipv4를 사용함 = 4byte
header length = 3계층의 해더크기는 20바이트 이다 // 1 = 4byte // 20 byte = 5
MAC source address | MAC destination address | type(length) | 패킷 (version number 4 + header length 5)
- service type : 세팅값에 따라 어떤건 빠르고 어떤건 늦게 간다 (하지만 지금은 의미가 없어져서 사용하지 않는다) = 0 → 만약 숫자가 0이 아니고 1이라는 숫자가 하나라도 나오면 잡아내야함
Covert Channel Hacking 은밀한 채널 해킹: 모든 OS는 service type 이 안쓴다는 걸 알기 떄문에 해석을 하지 않음, 해석하면 속도가 느려지니까 → 해커들이 좀비pc 에 명령을 때려서 시그니처를 하는데, 데이터에 attack 명령어를 쓰는게 아니고 service type 에서 명령을 때린다. 왜냐? 아무도 사용하지 않기 때문에 걸리지 않는다.
- packet length(fragment offset) : 패킷의 최대 사이즈 1500 // 8바이트 단위로 계산한다.
- Time to live : 패킷이 살아남기 위한 시간 // 예를들어 100으로 설정되어 있으면 라우터를 지날떄마다 하나씩 깐다 0이되면 소멸한다. - 쓰레기 패킷을 없애기 위함 (전송은 안되고 라우터끼리 핑퐁을 하는 등 ..)
- transport : TCP 를 보낼지 IP를 보낼지 적어놓고 받는쪽에 배려를 한다는 의미. 윗계층 누구한테 줘야하는지를 적어놓음
- header checksum: hash값으로 혹시나 의심스러울때 비교를 했는데 같으면 무결성 o같지 않으면 무결성에서 어긋나서 잡아내야함 // UDP 17 TCP 6
*UDP 17과 TCP 6은 각각 UDP와 TCP 프로토콜을 식별하는 프로토콜 번호입니다. 이 번호들은 IP 헤더에서 해당 프로토콜을 구분하는 데 사용됩니다.
scanner : 내가 상대방을 공격하기 전에 상대방의 정보를 꺼내 오는 것 ( Nmap )
- 1기가를 전송하기 위한 패킷이 몇개가 팔요한가 ?
1기가 / 1500byte (패킷의 최대 사이즈)
하지만 헤더 20을 빼면 1480 만 한번에 전송될 수 있다 =
한번에 1기가를 받지 않고 1500byte씩 나눠서 받는 이유는 중간에 전송중 에러가 나면 1500만 다시 보내면 되지만 1기가로 보낼경우 1기가를 처음부터 다시 보내야한다.
- identification: 어디 데이터에서 왔는지 식별을 한다. A B C를 한번에 다운받는다고 가정을하면. A에서 쪼개고 B에서 쪼개서 전송되고하면 섞인다. 이것을 식별하고 모으기 위한 장치
- DF (Dont Fragment): 분할하지 마라 / 있는 그대로 전송하면되고 분할하지 마라 (쪼개서오면 잡아내면된다)
fragmentation attack : 분할하지않아야 하는 것을 분할해서 하는 공격.
(패턴 = rule = signiture = 침해사고 = 악성코드// 모두 같은 말)
정보보호 기술은 패턴매칭 밖에 없다
V3 백신이 하는게 헤더와 데이터에 어택이 있으면, 어택 공격을 잡아내는 것 안잡히게 하려면 fragmentation을 해서 쪼개지 않아야 할 것을 강제로 쪼갬 → 보안장비를 속여 식별이 안됌 → 끝에 가면 헤더를 때고 합치기 떄문에 공격이 된다.
- MF (More Fragment?) : 전송된 데이터가 완전히 다 들어왔는지 확인하는 장치 (내 뒤에 조각이 더 있나요? 하고 물어봄- 조각이 더 있으면 1 이라고 답함 그리고 마지막에 more fragment의 응답은 0으로 끝난다. - 반드시 마지막은 0으로 끝나야한다.)
—---------------------- 문제 -----------------------
IP 프롤토콜
**분할의 예
- IP 헤더를 제외한 전송 데이터의 크기가 380 바이트
- 패킷의 최대 크기가 128 바이트 일경우**
- Identification : 우리가 설정하는 값
- Packet length: 패킷의 최대크기 128바이트 에서 헤더 20을 떼고 봤을때 108바이트. Fragement Offset을 구하기 위해서는 8바이트로 나눠서 정수로 떨어져야 한다. 그래서 104 로 데이터 크기를 임의로 줄여 8바이트로 나눴을때 정수로 결과가 나오게 한다. (기존 108→104로 줄이면서 남은 값들은 모아서 맨뒤에서 처리할 예정)
104 + 헤더20 = 124 가 하나의 packet legnth(패킷 길이는 헤더값을 포함함) 값이 되는 것
최종적으로 124 / 124 / 124 / 88 이 나오는데 헤더크기 20을 각각 떼고 총 합을 더하면 데이터의 크기 380바이트로 데이터 전부 정상 전송하게 된다.
MF (more fragment) : 너 뒤에 더 있니? 있으면 1 마지막은 무조건 0 이되어야 한다.
Fragment Offset: 8바이트로 나눠져야함/ 패킷의 최대 크기 128바이트에서 헤더 20 떼고 108바이트에서 8로 나눴을때 정수로 떨어지게 하기 위해 104바이트로 줄임 → 이값을 8바이트 단위로 나누면 104/8 = 13
오프셋은 중첩이 되어 표에 작성된다. 13 / 26 / 39 … 데이터의 크기 380바이트가 모두 전송될때까지 늘어남
—
결과표
transport layer (전송 계층) (4계층)
데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송이라면, 전송계층은 논리적으로 1:1 연결된 호스트 사이의 전송
- 흐름 제어
물리적 계층과 비교하여 상대적으로 복잡
수신자가 슬라이딩 윈도우 프로토콜의 윈도우 하단 값을 조정
슬라이딩 윈도우 프로토콜은 데이터 전송의 흐름을 제어하는 방법입니다. 이 프로토콜은 주로 TCP(전송 제어 프로토콜)에서 사용되며, 송신자와 수신자 간의 데이터 전송을 효율적으로 관리하기 위해 사용됩니다.
슬라이딩 윈도우 프로토콜의 기본 개념:
윈도우 크기:
슬라이딩 윈도우 프로토콜에서는 송신자가 한 번에 전송할 수 있는 데이터의 양을 "윈도우 크기"로 정의합니다. 이 윈도우 크기는 수신자가 처리할 수 있는 데이터의 양을 나타냅니다.
윈도우 하단 값:
윈도우 하단 값은 현재 수신자가 수신할 수 있는 데이터의 시작 지점을 나타냅니다. 데이터가 수신되면 이 하단 값이 이동하여 새로운 데이터가 수신될 준비가 됩니다.
수신자가 윈도우 하단 값을 조정하는 이유:
수신자는 자신의 버퍼 크기 및 처리 능력에 따라 윈도우 하단 값을 조정합니다. 만약 수신자의 버퍼가 가득 차면, 수신자는 송신자에게 더 이상 데이터를 보내지 못하도록 하여 데이터 손실을 방지합니다.
- 오류 제어
데이터 변형, 데이터 분실 오류
재전송 기능으로 복구
빨리말하면 이해 못한다.
TCP 헤더 크기는 20 이다.
1480 - 20 = 1460
TCP
연결형 서비스를 지원
전이증(쌍방향) 방식의 가상 회선을 제공
신뢰성 있는 데이터 전송을 보장
TCP 헤더
1층은 4byte
TCP 헤더 크기: 4 * 5층 = 20 byte
6층// padding 은 배수를 맞춰주기 위해 사용한다. // 마지막 층은 지금은 사용하지 않는다.(제외)
TCP, UDP (4계층)의 상위 계층은 7계층(응용프로그램) 이다.
포트번호
- TCP, UDP 프로토콜이 상위 계층에 제공하는 주소 표현 방식
TLS (port 443)
SSL (port 20)
TLS(전송 계층 보안, Transport Layer Security)는 인터넷에서 데이터의 안전한 전송을 보장하기 위해 설계된 암호화 프로토콜입니다
Well-known 포트
- 많이 사용하는 인터넷 서비스에 고정된 포트 번호 할당
포트 숫자가 1024 보다 작으면 모두 Well-known 포트이다. (전세계 통용)
- Source port : 보내는 쪽의 포트 // 웹서버 포트는 port 80
- Sequence Number: 3계층 네트워크 계층까지는 데이터만 빨리가면 되었지만, 4계층에서는 데이터 전송의 신뢰성과 순서를 보장하는 데 필수적인 역할을 합니다.
- Acknowlegement number : 말풍선 100개를 했는데 응답이 50번 까지만 받으면 100을 다 받기 위해 기다린다. 응답이 오지 않으면 51번 부터 다시 보낸다. - 상대가 어디까지 받았는지를 확인하는 것
Data Offset(= headerLength 20byte)- Reserved : 앞으로 예약된 것이 있다. (요즘은 사용하지 않아서 0 값을 넣는다)
Flag 각 1비트 (1비트는 경우의 수가 2개)
- URG (urgent) : 패킷을 빠르게 처리 할 수 있는 방법 ( urgent 라고 빨리 보낼 수있는 것이 요즘은 없기 떄문에 사용하지 않는다 비트번호 0 으로 처리)
- ACK : SYN 에서 의견을 물어보고 ACK 에서 대답을 한다. 응답하면 okay sign 응답을 안보내면 no
- PSH (push) : 해더 해석이 다 되었으면 상위계층으로 올릴때 사용
- RST (reset): 급한일이 있을때 너랑 이야기 안하고 끝남 FIN은 1의 신호를 받아야끝나지만 이건 내가 통보하는 방식임
- SYN : 0하고 1밖에 없다고 가정하면, 나는 너하고 이야기하고 싶어라고 신호 1(말풍선)을 던지는 의견을 물어봄
- FIN (finish) : 할말 다 끝나고 FIN을 1로 보내면 그 이후에 내가 어떤말을 하든 간에 듣지 못한다.
- Window : 슬라이딩 윈도우 프로토콜과 같음 // 상대방이 초당 100 마디하면 난 능력이 안되 초당 50마디만 말해줘 라고 제어해주는 흐름제어장치
- Checksum : 무결성을 확인하기 위함
- Urgent Pointer : URG가 1이 되었을때 사용, 급한 일이 있을떄 사용하기 위함 // 요즘은 URG 를사용하지 않기 떄문에 비트번호가 0 이 되어야한다.
Sequence Number 는 정하기 나름 (보통 1로 시작)
- Sequence number
- ACK number : 다음에 수신하기를 원하는 데이터를 지정
6계층에서 내려온 것을 캡슐로 싸면 캡슐라이제이션
UDP - 8byte
비연결형 서비스를 제공
Best effort (빨리만 보내면 된다) 전달방식을 지원
실시간적 중요성을 하기 위해 생김 (헤더 처리가 없기 떄문)
신뢰성이 의미가 없을때 빨리 하기 위해서 사용
지금의 모든 것들은 TCP 를 사용한다.
지금 실시간 방송은 TCP 를 사용 // 엄밀히 따지만 실시간은 아니다 UDP를 사용해야함
ex) 프랑스에서 금메달 땃으면 바로 주는게 아니고 2~3초동안 데이터의 분실이 있나 확인하고 송출한다.
해커들이 명령어 때릴 떄는 UDP 를 사용한다 ( 응답을 받을 일이 없기 때문)
SYN Flooding
SYN Flood는 반개방 공격이라고도 하며, 보낸 SYN 요청에 대한 서버의 SYN-ACK에 응답하지 않고 SYN 요청만 마구잡이로 보내는 네트워크 계층 공격입니다. 결과적으로 많은 수의 열린 TCP Connection으로 인하여 서버의 리소스가 과도하게 소모되어 정상 트래픽의 처리를 어렵게 하면서 정상적인 새로운 Connection을 열 수 없으며, 이미 연결된 사용자의 Connection의 경우에도 서버가 올바르게 작동하기 어렵게 됩니다.
(4) 웹 구조 및 보안
1번문제 GET POST 메소드
HTTP 프로토콜에서 클라이언트가 서버에 요청을 보내는 두 가지 방법
GET :
- GET 요청은 서버에서 리소스를 가져오는 데 사용됩니다. 일반적으로 GET 요청은 본문이 필요하지 않습니다. 요청할 URL만으로도 충분히 서버가 어떤 리소스를 반환해야 하는지를 알 수 있습니다.
- 파라미터 값이 한줄으로 나온다. (글자수 제한 255자가 있다)
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=test
POST :
- 파라미터 값이 안보이게 숨겨져있음 (어떤 인자값이 날라가는지 보이지 않기 때문에 안전하다고 하지만 web proxy tool을 사용할 경우 전부 보이기 떄문에 공격자 입장에서는 GET과 POST는 의미가 없습니다. (글자수 제한이 없다 서버적으로 보내야할 데이터가 많으면 POST 사용)
https://search.naver.com/search.naver
2번문제 응답값 200ok
HTTP Version | 상태코드 | 코드설명
- HTTP Version: 1.1: 현재 사용 중인 HTTP 프로토콜의 버전을 나타냅니다. 여기서 1.1은 HTTP/1.1 버전으로, 웹에서 가장 많이 사용되는 버전 중 하나입니다. HTTP는 주로 1.0, 1.1, 2.0, 3.0 등의 버전이 있습니다.
- 상태 코드: 서버가 클라이언트의 요청을 처리한 후, 요청의 결과를 숫자로 표기하는 것입니다. 예를 들어:
- 200 ok: 요청이 성공적으로 처리되었음을 의미합니다.
- 404 not found: 요청한 페이지를 찾을 수 없음을 의미합니다.
- 500 error: 서버 내부 오류가 발생했음을 의미합니다.
- 코드 설명: 상태 코드에 대한 설명을 제공합니다. 예를 들어, 200 상태 코드는 "OK"라고 설명하며, 이는 요청이 성공적으로 처리되었음을 나타냅니다.
3번문제 File download 취약점
파일 다운로드 취약점이란 서버에 업로드 된 파일을 다운로드 받을 수 있게 만들어진 서비스를 이용하여, 정해진 파일이 아닌 다른(시스템 파 일, 소스 코드 등)파일을 다운로드 받을 수 있는 취약점이다.
다른파일은 시스템파일(etc의 패스워드 파일, hosts 파일 같이 없어서는 안되는 파일들) 이나 소스 코드가 될 수 있다.
개발자가 의도하지않게 다른 파일을 의도하는 것
**커멘드 인젝션- 개발자가 의도하지않게 다른 파일도 같이 수행하는 것
기존 URL
http://freehack.bug/board/board_down.php3?file_name=c99.php
공격 실행
URL에 아래와 같이 작성하면 루프가 돌면서 etc/passwd 파일을 받을 수 있음
http://freehack.bug/board/board_down.php3?file_name=/../../../../../../etc/passwd
./ 를 강제로 지우는 아래와 같은 코드가 있으면
-> ..// 이런식으로 두번 적으면 ./ 가 지워져도 ./ 한묶음이 남기 때문에 우회할 수 있다.
4번문제 Cross Site Script (CSRF) - client side
Cross Site Request Forgery, 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.
ex) 회원 정보 수정, 데이터 수정 또는 삭제, 비방/욕 댓글
- 해커의 악의적인 스크립트 게시글을 관리자가 읽으면 관리자 계정의 비밀번호가 해커가 설정한 비밀번호로 바뀔 수 있다.
- 클라이언트 사이드에서 계정정보를 바꾸는 공격 -> 클라이언트의 정보가 목표, 서버의 공격이 아니다.
- 해커가 아래 스크립트를 이용해 악의적인 게시글(본문에 스크립트 삽입)을 작성한다.
- 관리자가 게시글을 읽으면 아래의 스크립트에서 설정한 것처럼 관리자 계정의 비밀번호가 12345 로 바뀐다.
Server Side Request Forgery (SSRF) - server side
SSRF는 Server Side Request Forgery의 약자로 유사한 이름을 가진 CSRF(Cross Site Request Forgery) 와는 다르게 클라이언트 측의 요청 을 변조시키는 것이 아닌 서버 측 자체의 요청을 변조하여 공격자가 원하는 형태의 악성 행위를 서버에 던져주면 서버가 검증 없이 그대로 받아 그의 따른 행동/응답을 해주는 공격
* 공격자가 내부망에 있는 서버를 접근 하기 위해서는 직접 접근은 불가 (방화벽, IDS, IPS …. 등) 보안장치가 많다. 심지어 해커(공인아이피)에서 server(사설아이피) 가 보이지도 않는다.
-> 중간에 있는 server의 취약점(매개체역할)을 통해 서버(사설 아이피)를 공격할 수 있다.
보안대책
- 내부 시스템과 상호 작용하는 변수에 불필요한 값이 입력될 경우 무효처리를 해야 됨
- 변수에 입력된 주소가 올바른 주소가 맞는지 즉 신뢰하는 주소가 맞는지 재검증을 해야 됨
실습에서 hacker.bug 가 믿어도 되는 URL인지 확인할 수 있는 로직을 삽입해야한다.
접근할 수 있는 사이트만 접근할 수 있게하고 접근하면 안되는 사이트는 전부 거절 (화이트리스트)
정상적인 요청으로 공격하기 때문에 웹 방화벽에서 통제가 되지 않는다.
- 여러 우회 공격 기법 중 대상 사이트에 대한 신뢰할 수 있는 도메인과 루프백 주소를 매칭하여 지정해둔 도메인을 요청하는 경우가 존재하기 때문에 요청 시 도메인 이름에 대한 검증도 수행
5번 ???
(5) 정보보호 법 제도
망법 - 정보보호최고책임자, 정보보호 관리체계 인증(자세히보기)
개인정보보호법 - 정의, 수집/이용, 제공, 유출신고, 개인정보 책임자, 가명정보
https://brandonlog.tistory.com/101
@@ 정보보호 최고 책임자
정보보호 최고책임자는 대통령령에 의거 과기정통장관에게 보고해야하는데 -> 매출액, 회사 규모가 크면 안해도 됌(근데 시가총액큰애들은 겸직 금지임) -> 근데 정보보호 관련 업무는 또 겸직이 된대
정보보호 최고책임자는 다음 각 목의 업무를 총괄한다.
가. 정보보호 계획의 수립, 시행 및 개선
나. 정보보호 실태와 관행의 정기적 감사 및 개선
다. 정보보호 위험의 식별 평가 및 정보보호 대책 마련
라. 정보보호 교육과 모의 훈련 계획의 수립 및 시행
@@ 정보보호관리체계인증
이 사람들은 제1항에 따른 인증을 과기정통장관에게 받아야한대 - 근데 국제인증이나 정보보호조치를 취했으면 일정부분 생략이 된대
- 전기통신사업을 하는 양반
- 집적정보통신시설 하는 양반
- 정보통신서비스 부분 일정 수준 넘는 놈들
정보보호관리체계인증 유효기간은 3년 다만 정보보호 관리등급을 받은 경우, 유효기간동안 제1항의 인증을 받은 것으로 간주한다.,
이래놓고 장관 일 능률을 위해 인증기관을만들어서 (KISA) 인증심사를 정해놓고 대리맡긴다네
인증기관들은 연 1회이상 사후관리를 실시하고 장관한테 보고해야한대 (KISA, 정보보호관리체계인증기관(SK쉴더스), 정보보호관리체계심사기관
장관은 정보보호관리체계인증 취소가 가능한데, 거짓, 인증기준미달, 사후관리 거부를 하면 취소한대
@@ 개인정보보호법
개인의 자유와 권리를 보호하고, 나아가 개인의 존엄과 가치를 구현
개인정보 -> 살아있는 개인의 정보
- 개인을 알아볼 수 있는정보
- 성명, 주민번호, 영상
- 결합하여 알아볼 수 있는 정보
- 가명정보 (가명처리: 개인정보 일부를 삭제해서 추가 정보 없이 개인을 알아볼 수 없음)
정보주체 권리 (처리에 관한 정보제공받을권리, 동의 여부 선택권리, 개인정보 열람권리, 처리정지,파기요구권리, 처리로인한 피해 구제받을 권리, 결정거부 및 설명요구 권리
@@정보 수집 및 이용
정보주체의 동의를 받거나 법령 또는 생명,재산 등 불가피한 경우, 개인정보처리자의 정당한 이익달성을 위한경우
정보 동의를 받을 때 정보주체에게 알려야할 목록
- 수집 이용목적
- 수집하려는 개인정보 항목
- 개인정보 보유 및 이용기간
- 동의 거부 권리 및 동의거부에 따른 불이익 내용
개인정보처리자는 정보주체의 개인정보를 제3자에게 제공할 수 있다. - 동의받았을때, + 대통령령으로 정하는 바에 따라 정보주체 동의없이 개인정보를 제공할 수 있다.
@@가명정보
개인정보처리자는 정보주체의 동의없이 가명정보를 처리할 수 있다.
3자에 제공하는 경우 특정 개인을 알아볼 수 있는 정보를 포함해서는 안된다.
연구를 위한 가명 개인정보처리자들의 통합은 전문기관에서만 수행한다.
개인정보처리자는 가명정보를 처리하고자하는 경우 / 가명정보처리목적, 제3자 제공시 제공받는 자, 가명정보의 처리기간 등 관련 기록을 보관해야하고 가명정보를 파기한 경우 파기날부터 3년 이상 보관하여야한다.
@@유출신고
개인정보처리자는 개인정보가 유출되면 정보주체에게 알려야한다.
- 유출항목
- 시점과 경위
- 발생할 수 있는 피해를 최소화하기 위한 정보주체가 할 수 있는 방법에 대한 정보
- 대응조치 및 피해 구제절차
- 피해가 발생할 경우 신고 등을 접수할 수 있는 담당부서 및 연락처
개인정보처리자는 개인정보 유출을 알게 되었을 경우 72시간내에 서면등의 방법으로 전문기관(KISA)에 신고해야한다. , 천재지변시는 그 이후 신고해야함 / 정보주체 권익 침해 가능성이 자체조사에서 낮아졌다고 판단하면 신고 안해도됌
@@ 개인정보보호책임자
개인정보처리자는 개인정보보호책임자를 임명해야함
- 보호 계획의 수립 및 시행
- 처리실태 및 관행의 정기적 조사 및 개선
- 개인정보처리관련 불만의 처리 및 피해구제
- 유출 및 남용방지를 위한 내부통제시스템 구축
- 개인정보보호 교육계획의 수립 및 시행
- 관리 감독
해외 법인회사들은 개인정보 처리에 관한 국내대리인을 문서로 지정해야한다.
- 개인정보 보호책임자의 업무
- 개인정보 유출 등의 통지 및신고
- 물품 서류등 자료의 제출 (국내 대리인은 국내 영업소가 있어야함)
- 국내 대리인 성명, 주소(영업점), 전화번호 및 전자우편주소
국내대리인이 법을 위반한 경우 개인정보처리자가 그 행위를 한 것으로 본다.
(6) 시스템 보안 및 취약점 진단
Assembly 기계어와 일대일로 대응이 되는 컴퓨터 언어
레지스터 : CPU내에 존재하는 기억장치로 메모리 외 빠른 데이터 저장 및 읽기가 가능한 장치
범용레지스터: 연산 결과 저장, 산술 논리 연산, 주소 저장 등 다목적으로 사용
인덱스레지스터: 메모리 내 데이터 접근 시 주소를 가리킬 때 사용
RIP는 "Instruction Pointer"의 약자로, 현재 실행 중인 명령어의 주소를 가리키는 레지스터
fastcall : 레지스터에 사용할 인자를 적어서 사용한다
- PUSH: 스택에 데이터를 추가하는 연산.
- POP: 스택에서 데이터를 제거하고 반환하는 연산.
ESP: 스택의 최상위(top)를 가리키며, 함수 호출 및 리턴, 변수 저장 및 로드 시에 사용됩니다.
EBP: 스택의 최하위(bottom) 또는 함수의 스택 프레임의 기준 지점을 가리키며, 함수의 로컬 변수나 인수에 접근할 때 기준이 됩니다.
LEA
메모리 주소를 계산하여 레지스터에 로드하는 데 사용되는 어셈블리 언어의 중요한 명령어입니다.
이를 통해 복잡한 주소 계산을 간편하게 수행, 포인터 연산이나 배열 처리에 유용합니다.
(두줄로 적어야 할 코드를 LEA 를 사용하면 한줄에 요약해서 적을 수 있다.)
1번문제 Canary
- 스택 오버플로우 보호 완화 기법(mitigation)
- 함수 호출 시 카나리 값을 스택 프레임의 최상단에 저장, 함수 종료 시 스택 오버플로우를 검사
Master Canary
- 로컬 카나리는 함수 종료 시 검사를 위해 마스터 카나리와 비교 -> 값이 다르면 스택오버플로우가 발생했다고 판단하고 프로그램을 비정상 종료시킴 (stack smashing detected error 발생)
- 일반적으로 마스터 카나리는 전역 공간에 저장되나 쓰레드에서는 마스터 카나리가 스택 영역에 저장
만약 카나리의 값과 마스터카나리값을 동일한 문자로 덮어버린다면 우회할 수 있다.
2번문제 ROP (Return Oriented Programming) 공격은 어떨때 사용가능한가
- ROP는 주로 실행 방지 메커니즘(NX 비트 등)을 우회하기 위해 사용됩니다. 이 기술은 악의적인 코드를 직접 삽입하는 대신, 기존의 실행 가능한 코드 조각(“gadget”)을 사용하여 원하는 동작을 수행합니다. - 버퍼오버플로우 취약점 이용
- 스택 주소는 실행 할 수가 없는데 코드영역은 CPU가 실행시켜야 할 코드가 들어가있으니 리턴할떄 쉘코드를 스택에 쓰고 스택으로가는게 아니라 코드영역으로 가면 어떨까 하는것
- Idea: 바이너리에 존재하는 코드를 재활용
- “Gadget”: pop rdi ; pop rsi ; ret
- 스택을 공격자가 조작한 입력으로 overwrite
- “gadget”을 연결해 프로그램 실행 흐름 조작
3번문제 Use After Free
• Dangling pointer: 해제된 영역의 포인터를 가리키고 있는 포인터
• 해제된 영역의 포인터를 계속 들고 읽을 수 있다면?
댕글링포인터와 관련이 있다.
이미 해제된 포인터인데 그 값을 계속해서 가지고 있기 때문에 1번으로 다시 읽어도 읽을 수 있는데 심지어 1번에 새드가 저장되어있고 2번해도 새드가 잘 나온다.
4번문제 Seccomp
프로세스가 사용할 수 있는 시스템 콜을 제한하는 샌드박스 보안 기능
(메모리보호기능은 아니고 샌드박스 보안기능임)
- 리눅스 커널 샌드박스 보안 기능
- 프로그램을 보호된 영역에서 동작해 시스템이 조작되는 것을 방지
- 프로세스가 사용할 수 있는 시스템 콜을 제한
5번문제 Timing-based Side Channel Attack
한 문자열씩 비교하면서 값이 다르면 프로그램 종료, 값이 같으면 기다리게 만듬
-> 타임아웃을 통해 flag 검출한다 / 시간이 오래걸리면 첫 문자열이 f 겠구나 하고 체크하고 넘어갈 수있음
(시간의 차를 기반으로 플래그를 읽어내려고 함)
실행시간을 비교한다
정상적일떄는
같은값이면 계속 본다.
정상작동하는지 시간을 비교한다.
(7) 리눅스 기초
1번문제 ARP
IP 네트워크 주소를 데이터 링크 프로토콜에서 사용하는 하드웨어 주소(Mac addr) 에 매핑하기 위해 인터넷 프로토콜 에서 사용하는 프로토콜입니다
ping 10.0.2.17 (목적지 아이피주소)
나의 IP 주소 10.0.2.15
목적지 IP 주소 10.0.2.17
출발지 MAC주소는 (나의 MAC주소)
내부망에 있는 10.0.2.17 에게 ICMP 패킷을 전송한다는 말
패킷전송을 하려면 목적지 MAC 주소가 필요하다. → 어떻게 알아내냐면 ARP 브로드캐스트 를뿌려서 알아낸다. (누가 10.0.2.17을 가지고 있어? whohas)
2번문제 top의 CPU 점유율
3번문제 free명령어 결과설명
리눅스에서 free 명령어는 시스템의 메모리 사용 현황을 보여줍니다. 주로 다음과 같은 정보를 제공합니다:
- total: 총 메모리 용량.
- used: 사용 중인 메모리 양.
- free: 사용 가능한 메모리 양.
- shared: 여러 프로세스 간에 공유되는 메모리 양.
- buff/cache: 파일 시스템 캐시와 버퍼에 사용되는 메모리 양.
- available: 현재 유저 프로세스가 사용할 수 있는 메모리 양.
Available 메모리: 사용 가능한 메모리 양을 나타내며, 유저 프로세스가 사용할 수 있는 메모리의 추정치입니다. 이는 free, buff/cache에서 시스템 예약 메모리를 빼서 계산됩니다. 따라서 free 메모리가 많더라도, 실제 사용 가능한 메모리는 더 적을 수 있습니다.
4번문제 Buffered I/O
Direct I/O vs Buffered I/O
- Direct I/O : CPU가 DISK 로 바로 때리는 방식
- Buffered I/O : CPU가 DRAM 을 거치고 DISK 를 가는 방식 ( DRAM에 자주 access 하는 게 메모리에 남겨져 있어서 buffered 가 direct보다 빠르다
Buffered I/O: 파일 입출력을 할 때, 데이터를 직접 디스크에 쓰지 않고 메모리에 버퍼를 사용하여 효율적으로 처리합니다. 이 과정에서 페이지 캐시를 활용하여 성능을 향상시킵니다.
5번문제 시스템 이벤트 두가지
- 인터럽트: 하드웨어나 소프트웨어가 CPU의 작업을 중단하고 이벤트를 처리하도록 하는 신호입니다.
- 타이머 인터럽트: 주기적으로 발생하여 프로세스 스케줄링 등을 수행합니다.
- 네트워크 인터럽트: 네트워크 패킷 수신 시 발생합니다.
- 예외: 특정 이벤트가 발생했을 때 처리하는 메커니즘입니다.
- 시스템 호출 (syscall): 사용자 공간에서 커널 공간으로 요청을 전달하는 방법입니다.
- 페이지 폴트 (page fault): 요청된 페이지가 메모리에 존재하지 않을 때 발생하며, 페이지를 메모리에 로드하는 과정이 필요합니다.
네트워크 한번에 이해하자
응용프로그램
L7 : URL
—-
전송
L4 : port, TCP(연결형)/UDP(비연결형) (세그먼트) 헤더 크기 20byte
전송오류, 긍정응답,부정응답프레임, 프레임분실 -> 순서 번호, 흐름제어(상대방한테 데이터를 줄때 상대방이 받는 응답의 속도에 맞춰서 흐름 제어를 한다. (슬라이딩 윈도우 프로토콜))
슬라이딩 윈도우 프로토콜
윈도우 크기: 송신자가 한 번에 전송할 수 있는 데이터의 양을
윈도우 하단 값 : 현재 수신자가 수신할 수 있는 데이터의 시작 지점
수신자가 윈도우 하단 값을 조정하는 이유:
수신자는 자신의 버퍼 크기 및 처리 능력에 따라 윈도우 하단 값을 조정합니다. 만약 수신자의 버퍼가 가득 차면, 수신자는 송신자에게 더 이상 데이터를 보내지 못하도록 하여 데이터 손실을 방지합니다.
TLS(전송 계층 보안, Transport Layer Security)는 인터넷에서 데이터의 안전한 전송을 보장하기 위해 설계된 암호화 프로토콜
포트 숫자가 1024 보다 작으면 모두 Well-known 포트
UDP(비연결형) - 신뢰성이 의미가 없을때 빨리 하기 위해서 사용
3way handshake(전송계층에서 일어남) -> SYN Flooding 공격 (SYN만 마구잡이로 보냄 서버의 리소스가 과도하게 소모되어 정상 트래픽의 처리를 어렵게함)
—-
네트워크 (패킷) 헤더 크기 20byte
L3 : IP / BGP Hijacking - 네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격
패킷의 최대사이즈는 1500
1기가 / 1500byte (패킷의 최대 사이즈)
하지만 헤더 20을 빼면 1480 만 한번에 전송될 수 있다
—
물리, 데이터링크 (이더넷 =( LAN = MAC = 1,2 계층 = 물리적), 프레임, 헤더 크기는 14byte
L1,2 : MAC / ARP spoofing - 네트워크에서 ARP를 조작하여 데이터 전송을 가로채는 방식
—-
Smurf 공격 : 브로드캐스트 응답받을 IP 주소를 변조하여 공격대상자 IP 주소에 보내게 만들어 Dos공격을 하는 기법
BGP : AS(자율 시스템) 간에 라우팅 정보를 교환하는 프로토콜
BGP Hijacking : 네트워크 경로를 악의적으로 변경하여 트래픽을 가로채는 공격
ROP (Return Oriented Programming) 공격: 악의적인 코드를 직접 삽입하는 대신, 기존의 실행 가능한 코드 조각(“gadget”)을 사용하여 원하는 동작을 수행 - 버퍼오버플로우 취약점 이용
Dangling pointer: 해제된 영역의 포인터를 가리키고 있는 포인터
Seccomp: 프로세스가 사용할 수 있는 시스템 콜을 제한하는 샌드박스 보안 기능
비트 계산법
16진수는 2^4이기때문에 = 4비트이다.
‘영’ 4비트 ‘팔’4비트 ‘영’4비트 ‘영’4비트
8비트+ 8비트 = 2바이트