320x100

(보안업체 대표님 말씀)

'HOST 분석 스킬이 있으면 플레인 비트, host분석 스킬이 없으면 네트워크쪽으로 파라. 보안관제업체보다는 전쟁터로 들어가는 게 더 많이 배울 수 있다. 예를들어, 서비스가 돌아가는 곳 or 게임회사 or 포탈 or e커머스 아무일도 일어나지 않는 곳 보안이 명목적으로 있는 곳은 배울 것이 없다.' + 데이터 분석 시장이 유망하다.

 

사이버보안 환경변화 2부

 

우리나라 사이버보안은 3개로 나눠져 있음

  • 민간은 한국인터넷진흥원이 총괄
  • 공공은 국정원 담당
  • 군은 사이버사령부가 담당

우리나라는 아직 3.20 후속조치 체계로 이루어져있다.

 

2009년 7·7 디도스 공격

2009년 7월 7일을 기점으로 대한민국과 미국의 주요 정부기관, 포털 사이트,

은행 사이트 등이 분산 서비스 거부 공격(DDoS, 디도스)을 당하여 서비스가 일시적으로 마비된 사건이다.

 

2013년 3.20 사이버테러

2013년 3월 20일 문화방송, 한국방송공사, YTN 등 주요 방송사와 은행, 카드 회사 등의 전산망이 마비되었던 사건

 

2016년 국방망 해킹사건

원래 국방부 PC는 해킹 방지의 목적으로 인트라넷과 일반 인터넷 회선이 분리가 되어 있습니다. 그런데 국방부 내 한 PC에서 임의의 랜카드를 추가해서 사용하였고 그 랜카드가 결국 일반 인터넷망과 연결되면서 해킹이 시작되어 국방부 내 PC 약 3200대가 해킹되었습니다. 위 해킹은 북한의 소행이라고 추측하였지만 군사기밀은 이미 유출된 뒤 였고 한·미 연합군 대응계획인 ‘작전계획 5027’ 까지 유출되지 않았나 하는 의혹까지 불러들였습니다.

 

2021년 제로트러스트 선언

누구도 믿지 않겠다는 것이다. 제로 트러스트 전략에 따르면 안전한 영역도 없고, 안전한 사용자도 없다. 내부인이라도 철저한 인증과 신원 확인을 거쳐야 한다. 네트워크를 사용할 수 있는 시스템과 정보 접근 권한도 최소화할 필요가 있다. 

 

2022년 클레이스왑 20억 털린 사건

2022년 카카오톡의 대표 코인 플랫폼 클레이스왑이 BGP 하이재킹으로 22억 규모 암호화폐 탈취 당하였다.

 

- BGP Hijacking

AS(Autonomous System)라는 IP 대역을 자동으로 관리해 주는 서비스 간에 라우팅 테이블을 공유하는 BGP 프로토콜을 악용하여 공격자가 임의로 설정한 라우팅 테이블을 인접한 AS에 퍼뜨리는 것을 의미합니다. 

 

쉽게 말하면, 통신 시에 통신의 목적지를 공유하는 규칙이 있는데, 이 규칙을 악용하여 공격자가 임의로 설정한 목적지로 변조해버리는 것이죠. 

더 쉽게 말하면, 국가 간의 경계를 관리하는 관문을 강도 짓 해서 점거하고, 출입자들의 경로를 강도가 원하는 곳으로 납치해버리는 공격 방식

 

BGP Hijacking 공격 대응 방안

  • IP 대역에 맞지 않는 트래픽이 발생하는지 확인
  • 갑자기 응답 패킷의 양이 변하는지 확인
  • 잘못 연결되어 리다이렉트되는 트래픽이 있는지 등을 체크하면서 꾸준히 모니터링
  • 또한, 특정한 대역만 허용하도록 하는 화이트리스트 사용

(화이트리스트: 특정한 IP 주소, 도메인, 또는 네트워크 대역만을 허용하여 접근을 제어하는 보안 메커니즘)

  • 라우팅 정보의 무결성을 보장하는 인증서를 발행하여 통신의 신뢰성을 올리는 방법

 

복원력 resilience

  • 복원성 있는 네트워크는 주어진 권한을 벗어나는 행위를 빠르게 식별하고 이러한 행위를 격리할 수 있어야 한다.
  • 복원성 있는 네트워크는 통제 가능하도록 구성되어야 하며 이를 통해 잠재적 피해를 최소화할 수 있어야 한다.

Ex) 7.7 DDos 공격은 대응할 수 있는 장치가 구성되어 있지 않았다.

  • 이때 가장 중요한 것은 탐지된 비정상 행위를 격리하되 비즈니스 연속성 보장을 위한 작업의 생존성을 보장하여야 한다.

 

제로트러스트

제로트러스트는 경계선 기반 방어체계의 한계를 극복하기 위해 구성

제로트러스트는 자산의 중요도를 따진다. 자산을 식별하고 가치를 매기는 것이 어렵다.

경계선 기반 방어쳬계의 완벽한 항복 선언 ( 경계선 기반 방어는 증가된 공격표면을 감당하지 못함)

why ? 경계선을 만들 수 없다, 다른회사들 소프트웨어 쓰는거, 클라우드 기반 등을 지켜야 하는데 경계선이 무한히 확장되었기 때문에 지킬 수가 없다. 그래서 좀 더 자른 경계를 만들어야 한다 그게 제로트러스트이다.

네트워크의 구조변화를 통한 네트워크 가시성 확보에서 시작 ( 방어 가능한 네트워크 )

 

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): 데이터가 성공적으로 수신되었음을 확인하는 플래그입니다.

 

 

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 주소를 사용하여 서버의 자원을 고갈시키므로 방어가 더욱 어려워집니다.

 

방어방법

시그니처 기반 방어:

공격 패턴에 대한 시그니처를 설정하고, 이를 기반으로 비정상적인 트래픽을 필터링합니다. 이러한 방법은 자동으로 공격을 탐지하고 차단할 수 있는 효과적인 방법입니다.

 

대피소 동작:

대피소와 같은 시스템을 구축하여 공격이 발생했을 때 자동으로 대처할 수 있는 체계를 마련합니다. 이 체계는 공격을 감지하고, 필요한 경우 트래픽을 차단하거나 우회시킵니다.

 

프록시 및 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 공격 발생 시 자동으로 트래픽을 차단하거나 우회시키는 시스템을 구축합니다.

 

신속한 대응 체계 구축:
공격 발생 시 신속하게 대응할 수 있는 체계를 마련합니다. 예를 들어, 특정 패턴의 트래픽을 감지했을 때 자동으로 차단하거나 경고를 발생시키는 시스템이 필요합니다.

 


패킷 분석 실습

 

cat delegated-* 


cat delegated-* | awk -F"|" '{print $3}' | sort | uniq -c

 

| sort:
추출된 결과를 정렬합니다. 정렬된 결과는 다음 단계에서 중복 제거를 위해 필요합니다.


| uniq -c:
uniq -c 명령어는 연속된 중복 항목을 제거하고, 각 항목의 개수를 세어 출력합니다.


 

cat delegated-* | awk -F"|" '{print $3}' | sort | wc -l

 

delegated를 출력하여 3번째 칼럼의 word count를 확인

 


cat delegated-* | awk -F"|" '{print $2}' | sort -u | head

 

sort -u 데이터에서 중복을 제거하고 정렬된 고유한 값의 리스트를 생성

 

** 추가자료

 


cat delegated-* awk -F"|" '{print $0}' | grep -v *> uOv4.1

 

| awk -F"|" '{print $0}':
awk를 사용하여 각 행을 파이프(|)로 구분된 형식으로 처리합니다. 여기서 {print $0}는 현재 행 전체를 출력하는 명령입니다. 사실상 이 부분은 생략 가능하며, 단순히 cat의 출력을 그대로 전달하는 역할을 합니다.

 

| grep -v *:
grep 명령어는 특정 패턴을 포함하거나 제외하여 데이터를 필터링합니다.
-v 옵션은 "invert match"를 의미하며, 지정한 패턴이 포함되지 않는 행만 출력합니다. 이 경우 * 패턴이 포함되지 않은 행을 필터링합니다.


> uOv4.1:
최종 결과를 uOv4.1이라는 파일로 저장합니다.

 


 

cat ipv4.log | grep KR | tr"|""\t" | sort -k 6 | head

 

sort -k 6

여섯번째 칼럼을 기준으로 오름차순 정렬을 한다.

 


cat ipv4.log | awk -F"|" '{print $2 "\t" $5} END{print "ZZzZZ\tZZzZZ"}' | sort | awk '$1==prv{sum+=$2;next}{print prv "\t" sum; prv=$1; sum=$2}' | sort -rnk 2

 

2번 칼럼 : 국가 / 5번 칼럼 : 넘버

 

END{print "ZZzZZ\tZZzZZ"}는 마지막에 더미 데이터를 추가하여 집계 작업의 끝을 나타냅니다.

 

1번 칼럼(원래 2번) : 국가 == prv(previous) 일 경우, 2번 칼럼(원래 5번) 넘버를 더해라.

if not, prv 와 sum 값을 출력하라. 그리고 prv=$1; sum=$2

국가명이 달라지면 다시 뒤로 돌아가서 새로운 국가명으로 출력 시작합니다.

 

sort -rnk 2

리버스r + 랭크nk


cat ipv4. log | awk -F"|" {print  $2 "\t" $5}' | sort | awk '$1==prv{sum+=2; next}{print prv "\t" sum; prv=$1; sum=$2}' | sort -rnk 2 | awk '{print NR "\t" $0}'

 

| awk '$1==prv{sum+=2; next}{print prv "\t" sum; prv=$1; sum=$2}':
첫 번째 필드($1)와 이전 필드(prv)가 같으면 sum을 2 증가시키고, 그렇지 않으면 현재의 prv와 sum을 출력합니다. 이후 prv를 현재의 첫 번째 필드로 업데이트하고 sum은 두 번째 필드($2)로 초기화합니다.

 

| sort -rnk 2: 두 번째 필드를 기준으로 내림차순으로 정렬합니다. -r 옵션은 내림차순 정렬을 의미하고, -n은 숫자로 정렬하라는 뜻입니다.

 

| awk '{print NR "\t" $0}': 최종 결과에 행 번호를 추가하여 출력합니다. NR은 현재 레코드 번호를 나타냅니다.

 

이 명령어는 ipv4.log 파일에서 특정 필드를 추출하고, 해당 데이터를 정렬 및 집계한 후, 최종적으로 각 행에 번호를 붙여 출력합니다.


dig ns | grep root-server.net | awk '{print $5}'

 

dig ns:
dig 명령어는 DNS 정보를 조회하는 유틸리티입니다. ns는 네임서버 정보를 요청하는 옵션입니다. 만약 특정 도메인을 조회하고 싶다면 dig ns example.com과 같이 사용할 수 있습니다.

 

| grep root-server.net:
grep 명령어를 사용하여 root-server.net이라는 문자열이 포함된 행만 필터링합니다. 이 부분은 dig 명령어의 출력 중에서 특정 네임서버 관련 정보를 찾는 역할을 합니다.

 

| awk '{print $5}':
awk를 사용하여 각 행에서 다섯 번째 필드를 출력합니다. 일반적으로 네임서버의 IP 주소가 다섯 번째 필드에 위치합니다.

 


cat root_dns.domain | while read line; do echo "$line: $(dig "$line" +short)"; done

 

cat root_dns.domain:
root_dns.domain 파일의 내용을 출력합니다.

 

| while read line; do ...; done:
파이프를 통해 cat 명령어의 출력을 while 루프에 전달하여 각 행을 line 변수에 저장하고 처리합니다.

 

echo "$line: $(dig "$line" +short)":
echo 명령어를 사용하여 line의 내용과 함께 dig 명령어의 결과를 출력합니다.

 

dig "$line" +short는 각 행(도메인 이름)에 대해 간단한 DNS 정보를 조회합니다. +short 옵션은 출력 결과를 간단하게 보여줍니다.


 

**참고자료

 

$NF는 awk에서 사용되는 특수 변수로, 현재 레코드(행)의 마지막 필드를 나타냅니다. NF는 "Number of Fields"의 약자로, 현재 레코드에서 필드의 총 개수를 의미합니다.

 

 

dig kr ns | grep dns.kr | awk '{print $5}' | parallel dig {} +short | parallel whois -h whois.maru.com {}

 

dig kr ns:
kr 도메인의 네임서버(NS) 정보를 조회합니다. 이 명령어는 한국의 도메인 네임 서버 목록을 가져옵니다.

 

| grep dns.kr:
grep을 사용하여 dns.kr이 포함된 결과만 필터링합니다. 이는 한국의 특정 DNS 서버와 관련된 정보를 찾기 위함입니다.

 

| awk '{print $5}':
awk를 사용하여 각 행의 다섯 번째 필드를 출력합니다. 여기서 다섯 번째 필드는 일반적으로 네임서버의 도메인 이름입니다.

 

| parallel dig {} +short:
parallel 명령어를 사용하여 (이전 단계) 중간봉 | 앞에서 출력된 네임서버에 대해 dig 명령어를 실행합니다. +short 옵션은 결과를 간단하게 출력합니다.

 

| parallel whois -h whois.maru.com {}:
다시 parallel 명령어를 사용하여 각 네임서버에 대해 WHOIS 정보를 조회합니다. -h whois.maru.com은 WHOIS 서버의 주소를 지정합니다.

 

이 명령어는 한국의 네임서버 정보를 조회한 후, dns.kr과 관련된 네임서버의 IP 주소를 찾고, 해당 IP 주소에 대한 WHOIS 정보를 가져오는 과정을 수행합니다.

 

**참고자료


각 아이피가 어떤 나라를 거쳐서 최종적으로 도달했는지 그림을 그리는 방법

 

cat krdns.log | awk -F"|" '{print $7}' | sort -u | sed 's/ /->/g' > cmplx.dot

 

| sed 's/ /->/g':
sed를 사용하여 출력된 각 줄의 공백을 ->로 변경합니다. s/ /->/g는 각 줄에서 모든 공백을 찾아서 ->로 대체하겠다는 의미입니다.

 

> cmplx.dot:
최종 결과를 cmplx.dot 파일로 저장합니다.

 

emacs cmplx.dot

 

emacs cmplx.dot 명령어는 Emacs 편집기를 사용하여 cmplx.dot 파일을 열겠다는 의미입니다. Emacs는 강력한 텍스트 편집기로, 다양한 프로그래밍 언어와 파일 형식을 지원합니다.

 

Emacs 편집기를 통해 dot 파일을 열은 후 다이어그래프를 만들기 위해 위 아래로 digraph { ... } 을 작성합니다. 

...

 

cat cmplx.dot | dot -Tpng -o c.png

 

cat cmplx.dot:
cmplx.dot 파일의 내용을 출력합니다. 이 파일은 Graphviz에서 사용할 수 있는 DOT 형식의 그래프 정의를 포함하고 있어야 합니다.

 

| dot -Tpng -o c.png:
| 기호는 파이프를 의미하며, 앞선 명령어(cat)의 출력을 다음 명령어(dot)의 입력으로 전달합니다.
dot은 Graphviz의 도구로, DOT 언어로 작성된 그래프를 시각화하는 데 사용됩니다.


-Tpng 옵션은 출력 형식을 PNG 이미지로 지정합니다.


-o c.png 옵션은 출력 파일의 이름을 c.png로 지정합니다.

 

이후 [New SFTP window 클릭]

 

 

** 내가 위치한 다이렉토리가 이상해서 파일이 보이지 않을때

copy 파일명 ~/  ->     cp c.png ~/

 

**참고자료

 

 

 

중복된 선을 없애고 깔끔하게 프린트하는 법


 

tar -xzvf assn3.tar.gz

tar: tar는 Unix 및 Linux 시스템에서 파일을 아카이브하고 압축하는 데 사용되는 명령어입니다.
-x: 이 옵션은 압축을 해제(extract)하라는 의미입니다.
-z: 이 옵션은 gzip 압축을 해제하라는 의미입니다. tar.gz 파일은 gzip으로 압축된 tar 아카이브입니다.
-v: 이 옵션은 verbose 모드로, 압축 해제 과정에서 처리되는 파일의 이름을 화면에 출력합니다.
-f: 이 옵션은 뒤에 오는 파일 이름이 tar 아카이브 파일임을 지정합니다.


tshark -nnr assnq1_dns_sinkhole.pcap

tshark: tshark는 Wireshark의 명령줄 기반 패킷 분석 도구입니다. 네트워크 트래픽을 캡처하고 분석하는 데 사용됩니다.
-nn: 이 옵션은 네트워크 주소를 해석하지 않고 숫자 형식으로 출력하라는 의미입니다. 즉, IP 주소나 포트 번호를 숫자로 그대로 보여줍니다.
-r: 이 옵션은 지정된 파일을 읽는(read) 모드로 설정합니다. 여기서는 assnq_dns.sinkhole.pcap 파일을 읽겠다는 의미입니다.


tcpdump -nnr assnq1_dns_sinkhole.pcap

 

**

tcpdump 패킷 분석기 (헤더와 프로토콜을 분리하지 않음)

wireshark 프로토콜 분석기 (훨씬 강력) → 그래서 프로토콜을 분석할떄는 Tshark 를 쓰는 것이 좋다.

패키지에서 http 프로토콜을 뽑아내고 싶다 하면 와이어샤크를 이용하면 됌

 

1단계

tshark -nnr assnq1_dns_sinkhole.pcap -Tfields -e frame.time_epoch

 

주어진 명령어는 tshark를 사용하여 assnq1_dns_sinkhole.pcap 파일에서 패킷의 타임스탬프 정보를 추출하는 과정입니다.

 

-Tfields:
출력 형식을 필드 기반으로 설정합니다. 특정 필드만 선택적으로 출력할 수 있습니다.

 

-e frame.time_epoch:
출력할 필드를 지정합니다. 여기서는 각 패킷의 타임스탬프를 UNIX 시간 형식(에포크 시간)으로 출력하겠다는 의미입니다.

 

 

2단계

tshark -nnr assnq1_dns_sinkhole.pcap -Tfields -e frame.time_epoch -e ip.src -e ip.dst -e dns.qry.name

 

-e ip.src: 출발지 IP 주소를 출력합니다.
-e ip.dst: 목적지 IP 주소를 출력합니다.
-e dns.qry.name: DNS 질의 이름을 출력합니다.

 

3단계

tshark -nnr assnq1_dns_sinkhole.pcap -Tfields -e frame.time_epoch-e ip.src -e ip.dst -e dns.qry.name -e dns.flags.authoritative -e dns.a

 

-e dns.flags.authoritative: 해당 DNS 응답이 권위 있는 응답인지 여부를 나타내는 플래그를 출력합니다.
-e dns.a: DNS A 레코드를 출력합니다. 이 레코드는 도메인 이름을 IP 주소로 변환하는 데 사용됩니다.

 

 


 

tshark_ttl.sh assn_q2.pcap
tshark_http.sh assn_q2.pcap

tshark_ttl.sh: 이 부분은 실행할 스크립트의 이름입니다. 스크립트의 내용에 따라 다양한 분석 작업을 수행할 수 있습니다.
assn_q2.pcap: 분석할 패킷 캡처 파일의 이름입니다. .pcap 확장자는 패킷 캡처 파일 형식을 나타냅니다.
이 명령어는 tshark_ttl(or http).sh 스크립트를 실행하고, assn_q2.pcap 파일을 인자로 전달하여 스크립트가 이 파일을 처리하도록 합니다.


ngrep -qI assn_q3.pcap

 

주어진 명령어는 ngrep를 사용하여 assn_q3.pcap 파일의 내용을 분석하는 것입니다. 

ngrep: ngrep네트워크 패킷을 필터링하고 분석하는 데 사용하는 도구입니다. 일반적으로 패킷을 실시간으로 캡처하고 특정 패턴을 찾아 출력합니다.
-q: 이 옵션은 출력 시 "조용히" 작동하도록 설정합니다. 즉, 불필요한 정보 없이 패턴이 매치되는 데이터만 출력합니다.
-I: 이 옵션은 입력 파일을 바이너리 형식으로 읽어들이겠다는 의미입니다. ngrep는 기본적으로 실시간 패킷 캡처를 위해 설계되었지만, 이 옵션을 사용하면 파일에서도 데이터를 읽을 수 있습니다.
assn_q3.pcap: 분석할 패킷 캡처 파일의 이름입니다. .pcap 확장자는 패킷 캡처 파일 형식을 나타냅니다.

 

ngrep -qI assn_q3.pcap nbunbang.ru

 

맨 뒤에 원하는 정보 nbunbang.ru 를 적어서 그 부분만 추출할 수 있다.

 


tshark -nnr assn_q4.pcap tls.handshake.extensions_server_name

 

tshark: Wireshark의 명령줄 기반 패킷 분석 도구입니다.
-nn: 네트워크 주소를 해석하지 않고 숫자 형식으로 출력합니다. 이는 IP 주소나 포트 번호를 숫자로 그대로 보여주기 위한 옵션입니다.
-r: 지정된 파일을 읽는 모드로 설정합니다. 여기서는 assn_q4.pcap 파일을 읽습니다.
tls.handshake.extensions_server_name: TLS 핸드셰이크 과정에서 서버 이름 확장(Server Name Indication, SNI)을 추출하는 필드입니다. 이 필드는 클라이언트가 서버에 연결할 때 어떤 도메인 이름을 요청하는지를 나타냅니다.


이 명령어는 assn_q4.pcap 파일을 읽고, 각 TLS 핸드셰이크 패킷에서 서버 이름 확장 정보를 추출하여 출력합니다.

 

*TLS(Transport Layer Security)는 인터넷 상에서 데이터를 안전하게 전송하기 위한 암호화 프로토콜


 

전체 DNS 주소(칼럼 5번)를 불러온다.

 

총 DNS 서버가 몇개인지 확인 

 

12061개의 DNS 서버를 사용되었음.

DNS가 실제 DNS인지 확인하기 위해서는 kisa.or.kr을 집어 넣는다 만약 답변 해주면 open recursive 이다.

 

emacs digdns.sh

 

kisa.or.kr의 DNS 주소가 무엇인지 물어봄

retry 3번씩 하기 때문에 0으로 맞춤

 

TCP/IP에서 연결이 안되면 3번까지 리셋 시도를 하게 되어 있음

TCP/IP가 중간에 하이재킹인지 알고 싶다면 TTL값을 확인하면 됨 - TTL이 변한다

P1/bin/bash

echo $1 ${dig @$1 kisa.or.kr +short +retry=0}

 

bash digdns.sh 8.8.8.8 아래와 같이 kisa.or.kr 의 DNS 주소가 나옴 -> 즉 open recursive 라는 것

bash digdns.sh 8.8.8.8

 

 

 

만약, DNS 전체 주소를 물어보려면

 

tshark -nnr drdos.pcap dns | awk '{print $5}' | sort -u | parallel bash digdns.sh {}

 

클라이언트의 IP 주소를 정렬하려면

 

211292:  번호: 이 항목의 고유 식별 번호입니다. 각 로그 항목은 고유한 번호로 식별됩니다.
4.997539: 시간: 쿼리가 발생한 시간입니다. 소수점 숫자로 표현되며, 4초와 997539 밀리초를 의미합니다.
1.255.41.90: 출발지 IP 주소: 이 DNS 쿼리를 보낸 클라이언트의 IP 주소입니다. 즉, 요청을 보낸 사용자 또는 장치의 주소입니다.
->: 화살표: 요청이 보낸 방향을 나타내며, 클라이언트에서 서버로의 흐름을 보여줍니다.
203.234.152.20: 목적지 IP 주소: 이 쿼리에 응답한 DNS 서버의 IP 주소입니다. 클라이언트가 이 서버에 요청을 보냈습니다.
DNS: 프로토콜: 사용된 프로토콜을 나타냅니다. 이 경우 DNS(Domain Name System)를 의미합니다.
66: 패킷 길이: 전송된 패킷의 크기입니다. 여기서는 66 바이트로 표시됩니다.
Standard query: 쿼리 유형: DNS 쿼리의 유형을 나타냅니다. 이 경우 표준 쿼리임을 의미합니다.
Oxee85: 쿼리 ID: DNS 쿼리를 식별하기 위한 고유 ID입니다. 이 ID는 클라이언트와 서버 간의 통신을 추적하는 데 사용됩니다.
A: 쿼리 레코드 유형: 이 쿼리가 A 레코드를 요청하고 있음을 나타냅니다. A 레코드는 도메인 이름을 IPv4 주소로 변환하는 데 사용됩니다.
yna.kr: 쿼리 도메인: 클라이언트가 요청한 도메인 이름입니다. 여기서는 yna.kr이라는 도메인에 대한 정보를 요청하고 있습니다.

300x250

+ Recent posts