본문 바로가기

등등/네트워크 시스템 보안

네트워크 시스템 보안-2일차


* 복습
- Wireshark를 이용해서 패킷의 모양, 헤더의 특징 등을 확인
- FTP Sniffing, Telnet Sniffing, http Sniffing  -------> 평문으로 전송하기 때문 (암호화를 사용하지 않기 때문)
   (암호화는 다음주 월요일에 할 예정)
- 암호화 되는 프로토콜 : SSH, https, VPN, 원격데스크톱연결 등

* 코레일 암호화 해제 사례
https://www.youtube.com/watch?v=QBQ9SgS6h7k
- 왜 암호화를 해제했죠?  암호화를 하면 서버의 부담이 증가하게 됨

* http GET 요청만 보려면?  GET요청은 주로 페이지 요청 또는 검색할 때 사용
- 디스플레이 필터에  http.request.method == GET

* PW, 게시판글쓰기, 파일 업로드 ----> http POST (Client가 body에 정보를 포함해서 Server에게 요청을 보내는 것)
- 디스플레이 필터에  http.request.method == POST
- Edit > Find Packet    display filter를 string으로 바꾸고 POST를 검색  (키워드 검색 방법)

* File Signature
- 파일의 정체성을 나타내는 부분 ----> 파일의 맨 앞부분에 표시
- jpg(jpeg) : FF D8 FF E0 ~~~~ FF D9
- zip, apk, docx, pptx, xlsx  :  PK (50 4B 03 04) 
- PDF : %PDF-버전
  (Office 확장자에 x가 붙은 이유는?  xml의 약자 ----> 문서를 XML형식으로 통일)

-----> HxD.exe (헥스 에디터)  : 무료     Winhex, 011editor (비추, 유료 등)

* 포트 스캔
- 열린 포트와 닫힌 포트를 구분하는 것
- 열린 포트의 의미 : 서비스가 실행중임
  ----> 로그인이 가능한 서비스라면? ID/PW를 넣어봄, 로그인이 가능하지 않은 서비스는? DDoS
- 닫힌 포트는 공격이 불가능

* Kali Linux 다운로드
- 공식 웹사이트 : kali.org  
- Download > Virtual Machines > VMware 64bit (아래화살표) 클릭

* VMware 다운로드
- google에서 'vmware player' 검색하세요.
- 첫번째 검색 결과 클릭 ----> Windows용 다운로드


실습) VMware Player 설치
 ( 시작할 때마다 업데이트 확인, 사용자 개선프로그램 참여 -----> 체크 해제)

* 혹시 VMware가 설치 안되는 경우
- VC설치해야한다고 함 -----> 재부팅하면 Windows시작할 때 자동으로 설치됨
- Virtual Support 기능이 필요   -----> Bios에서 CPU메뉴 Virtual 기능 활성화 (오래된 컴퓨터의 경우)
- Hyper-V가 활성화 된 경우 ----> Hyper-V를 비활성화 또는 제거하면 VMware가 정상적으로 동작됨
- 시작할 때 Non-Commercial Use에 체크

* 까페에서 VMware IP주소 바꾸기 다운로드 하세요.
- 압축을 풀고, 압축푼 파일을 복사해서 아래 경로에 붙여넣기 하세요.
  C:\Program Files (x86)\VMware\VMware Player    (붙여넣기할 때, 관리자 권한 필요 yes)
- 붙여넣은 파일 vmnetcfg.exe를 오른쪽 마우스 클릭해서 관리자 권한으로 실행
   VMnet8 번을 선택하고, Subnet IP주소를 192.168.5.0 으로 수정하고, OK를 누르면 끝
   (VMnetwork를 192.168.5.0/24로 변경 ----> 다같이 통일)

kali-linux-2022.1-vmware-amd64.7z  파일 압축을 풉니다.

* Kali Linux
- 공식 웹사이트 : kali.org
- Offensive Security社에서 무료로 배포  (취약점을 제보하는 exploit-db.com을 운영)
- Debian Linux에 각종 해킹 툴과 보안 도구를 설치해서 배포 -----> 공격용 (실습을 해볼 수 있게 제공)
- 원래 이름은 Backtrack이었으나 모 음반사에서 상표권 이의 제기로 이름을 Kali Linux로 변경
- 원래 Kali는 인도의 전쟁 여신, 시바(Siva)신의 부인 ----> 구글 검색 비권장
- 기본적으로 약 200개 정도 설치, 추가로 5~600개정도 설치 가능 (유료 도구인 경우에는 시험사용하도록 되어 있음)

실습) VMware에서 Kali 실행
- Player > File > Open  ----> 압축푼 폴더로 들어가면 
   kali-linux-2022.1-vmware-amd64.vmx 파일을 선택하고 열기 클릭
   Play Virtual Machine 클릭, I copied it (선택)
- 로그인 : kali / kali

* 시간 맞추기
시계에 오른쪽 마우스 클릭 > Properties >  Time zone에 Asia/Seoul을 입력하고 Close클릭

Quiz) 시간을 맞추어야 하는 이유는?
   로그에 시간이 기록되는데 정확한 시간을 알기 위해서 ---> 사건의 전후관계 등 파악


metasploitable-linux-2.0.0.zip 압축풀기
VMware를 새로 시작하고, Player > File > Open 해서 압축푼 폴더의 Metasploitable.vmx 파일을 선택하고 열기
Play Virtual Machine 클릭, I copied it 클릭
VMware 안쪽에 마우스 클릭 
로그인 : msfadmin / msfadmin
ifconfig
  ---->  192.168.5.129 (혹시 다를경우 IP를 잘 기억하세요)
마우스를 바깥으로 나오게 하려면 Ctrl키와 Alt키를 동시에 눌렀다 떼면 됨

* Metasploitable2
- Ubuntu Server에 다양한 Application의 가장 취약한 버전을 설치
- Victim 전용 운영체제
- Rapid7社에서 Metasploit(Exploit도구)를 테스트해보기 위한 Victim 운영체제가 필요해서 Metasploitable 시리즈를 만듦

* 스캐닝(Scanning)
- 허가 받지 않은 곳에 스캐닝을 하면 정보통신망법 위반
- 사전 공격으로 간주 : 본격적인 공격을 하기 앞서서 준비하는 과정도 공격으로 간주함
- 취약점 분석 전문업체 등이 '계약서'를 문서화하고 점검하는 경우만 허용됨

1. IP Scan
- IP주소 대역 중에 켜져있는 시스템을 파악하기 위함
1) ARP를 이용하는 방법 (같은 네트워크인 경우)
$ sudo  nmap  -sn  192.168.5.0/24                    //  -s: scanning

5.1 - > 윈도우

5.128 -> kali

 


2) Ping을 이용하는 방법
$ sudo  nmap  -sP  192.168.5.0/24
$ sudo  nmap  -sP  192.168.5.100-140                 // 범위를 지정할 때 -(하이픈)을 사용


* 캡쳐방법
1) Windows키와 g  또는 Windows키 + Alt + r
2) Alt키 + Prt Sc

2. Port scanning
- 시스템에 열려 있는 포트를 찾는 것
1) TCP scan   ----> ACK
$ sudo nmap -sT 192.168.5.129
- 3-way Handshaking을 완성하는 스캐닝 기법 ------> Target host에 로그가 남음
- 장점 : 정확도 높음,  단점 : 로그에 남음

2) Stealth scan   ----> RST
$ sudo nmap -sS 192.168.5.129
- 3-way Handshaking할 때, ACK를 보내지 않음 (RST를 보내기도 함)  -----> 연결 취소 (로그에 남지 않음)

3) Version scan
$ sudo nmap -sV 192.168.5.129
- 버전 정보를 알 수 있음 ----> 취약점을 알 수 있음


4) OS scan
$ sudo nmap -O 192.168.5.129
- 운영체제의 정보를 알 수 있음

5) All scan
$ sudo nmap -A 192.168.5.129
- OS + Version + Traceroute + Script  = All scan
- 시간이 오래 걸리면 -T4를 추가하면 조금 빨라짐   ( -T : Timer,  뒤에 숫자가 클수록 빨라짐 0~6사이의 숫자 사용)

6) FIN scan : 000001
$ sudo nmap -sF 192.168.5.129
- SYN대신 FIN을 보내서 스캐닝하는 방법
- 연결이 안되어 있는데 FIN을 보내면 열린 포트는 응답이 없음, 닫힌 포트는 RST를 보냄 ----> 열린포트와 닫힌포트 구분 가능

7) Null scan : 000000
$ sudo nmap -sN 192.168.5.129
- TCP flag를 모두 0으로 만들어서 보냄 (TCP/IP로직에 맞지 않음)
- Null을 보내면 열린 포트는 응답이 없음, 닫힌 포트는 RST를 보냄 ----> 열린포트와 닫힌포트 구분 가능

8) X-mas scan : 111111
$ sudo nmap -sX 192.168.5.129
- TCP flag를 모두 1로 만들어서 보냄 (TCP/IP로직에 맞지 않음)
- X-mas를 사용하면 열린 포트는 응답이 없음, 닫힌 포트는 RST를 보냄 ----> 열린포트와 닫힌포트 구분 가능
- Nmap에서는 UPF만 1이고, ARS는 0으로 되어 있음 (효율성)


* FIN scan, Null scan, X-mas scan   -----> 엉터리 스캔(TCP/IP로직에 맞지 않음)
- 방화벽 유무 탐지 (닫힌 포트에서도 응답이 없다는 것은 방화벽이 RST를 버리기 때문)

실습) 와이어샤크를 이용해서 스캐닝 패킷(1~8)을 캡쳐하기


 참고) VMnet8 네트워크가 안보이는 경우, 노트북을 리부팅하면 보입니다.

* Wireshark메뉴에서 출발지Port와 목적지Port 메뉴 추가하기
- Edit > Preferences 클릭
- Columns 메뉴 클릭
- 아래쪽에 +를 누르면 New Column이 생성됨, New Column을 Info 위로 이동
- 이름을 SrcPort로 하고, 옆의 Number를 클릭해서 Src Port(Unresolved) 선택
- 같은 방법으로 DstPort생성하고 Dest Port(Unresolved)를 선택하면 포트번호 두개가 잘 보임

* OS scan
- Windows : 135, 139, 445 포트를 주로 사용 ----> 윈도우 파일 및 폴더 공유, Directory Service(Active Directory)
- Linux : 111번 포트 (RPC Bind)
- Ping도 보내고, NTP(Network Time Protocol) 등 다양한 프로토콜을 이용해서 OS여부 확인

* DoS 공격 (Denial of Service : 서비스 방해 공격)
- 서버에 부하를 주어서 정상적인 동작을 못하게 하는것

$ top                // 리눅스 시스템의 현재 상태를 2초마다 업데이트해서 화면에 보여줌


1. ICMP를 이용한 공격 (Ping of Death, ICMP Flood)
- ICMP의 특징: 5개의 오류메시지와 4쌍의 질의 응답으로 구성 
   ( Destination Unreachable: 목적지 도달 불가, Time exeeded:시간 초과 등,   Echo Request를 보내면 Echo Reply가 옴 )
$ sudo  hping3  --icmp  -d 65000  -i u1000  192.168.5.129
   (-d : data size,  65000bytes,  -i : interval ,  u1000 : 1000microsec 
   ( hping3 : hacker's ping version 3) 
   ----> Ctrl + c 누르면 중지됩니다.
  65000bytes ---> 44개 ----> 받는쪽에서는 재조립을 하느라 CPU를 소모하게됨 ---> 점점 느려지게 됨 ---> 정상적인 요청에 응답이 느려짐

2. LAND Attack
- 출발지 IP주소를 Target의 IP주소로 지정한 Ping of Death
$ sudo  hping3  --icmp  -d 65000  -i u1000  192.168.5.129  -a 192.168.5.129
   ( -a : 출발지 주소를 지정 ----->  IP Spoofing )

3. SYN Flooding
- SYN를 많이 보내서 웹서버 등이 정상 응답을 못하게 하는 공격
$ sudo hping3  -S  192.168.5.129 -p 80  -i u1000
   ( -S : SYN,  -p : port,   -i : interval,  u1000 : 1000microsec )

4. Smurf Attack
- 출발지IP를 Target으로 지정, 목적지IP를 Direct Broadcast로 하는 Ping of Death
- ICMP Echo Request를 Broacast로 뿌리면, 해당 네트워크의 호스트들이 Echo Reply를 출발지로 보내려고 함
- 출발지는 Target의 IP이므로 Target host가 Echo Reply를 모두 받게 됨

$ sudo  hping3  --icmp  -i u1000  192.168.5.255   -a 192.168.5.129 

실습) Kali 에서 아래와 설정
$ sudo  sysctl  -w  net.ipv4.icmp_echo_ignore_broadcasts=0                       // ICMP Echo를 Broadcast로 받더라도 응답하도록 설정
$ sudo  hping3  --icmp  -i u1000  192.168.5.255   -a 192.168.5.129 
----> Wireshark로 캡쳐해보세요.
    192.168.5.2와 192.168.5.128(Kali)가 Echo Reply를 192.168.5.129로 보내는 것을 알 수 있음 (공격에 동원되고 있음)

sysctl : 리눅스의 환경설정 명령 (Windows의 레지스트리 변경 regedit.exe과 비슷)

$ sudo  sysctl  -w  net.ipv4.icmp_echo_ignore_broadcasts=1                 // ICMP Echo Request를 Broadcast로 받더라도 응답하지 않게됨


* 스캐닝 : 1번부터 65535번 포트를 순서대로 SYN를 보내봄 ----> 응답이 있나 없나 확인
  DoS공격 : 한포트에 집중적으로 SYN/Echo Request 등을 보내서 대기큐를 채우거나 Echo Reply를 Target으로 보내는 등

Quiz) DDoS공격이 얼마나 자주 발생할까요?    5
1) 1달에 1번
2) 일주일에 1번
3) 하루에 1번
4) 1시간에 1번
5) 매초

https://horizon.netscout.com/     실시간으로 DDoS공격 중계

https://livethreatmap.radware.com/    다양한 공격 방법 실시간 중계

DDoS공격 사람이 하는 것이 아니고 Bot(자동화된 프로그램)이 공격을 수행
암호화폐 거래의 80%,  주식거래의 70%이상은 Bot이 거래함

DDoS공격 단계
1단계) 관리가 소홀한 컴퓨터를 해킹해서 C&C프로그램을 설치 (Command & Control) ----> 30개
2단계) Zombie로 감염시킬 악성코드를 유포 (맵핵)   ---->  2000대~3만대 이상
3단계) Zombie에 감염되면 C&C에 자신이 감염되었음을 알림
4단계) C&C에 Zombie리스트 확보됨 -----> 판매 or 공격시 활용
5단계) Attacker는 C&C를 옮겨다니면서 공격 명령을 내림

보안 업체는 어떤 단계에서 차단하는 것이 가장 좋을까요?
- 일부러 Zombie에 감염을 시킴 
- Zombie가 어디로 연락하는지 확인 ----> Wireshark로 보면 IP보임 (C&C의 IP주소임)
- Zombie에게 신호를 보내는 C&C의 IP를 찾아서 차단

* DoS 공격 종류를 Wireshark로 캡쳐해서 블로그 or PPT로 작성하세요~
1) Ping of Death
2) LAND Attack
3) Smurf Attack
4) SYN Flooding



* SYN Flooding 대응방법
1. Backlog의 크기를 늘림
- Backlog 크기 확인하기
$ sudo sysctl -a | grep backlog                                //  -a 확인     
net.ipv4.tcp_max_syn_backlog = 128                          //  128로 설정되어 있음 (너무 작음)

- Backlog 크기를 1024로 늘리기 (설정변경)
$ sudo sysctl  -w  net.ipv4.tcp_max_syn_backlog=1024      //  -w : write


참고) Backlog가 너무 작으면 쉽게 채워짐

2. SYN Cookies 기능 활성화
- 확인하는 방법
$ sudo  sysctl  -a  |  grep  syncookies                     // 0으로 되어 있으면 비활성화, 1은 활성화
- 변경하는 방법
$ sudo  sysctl  -w  net.ipv4.tcp_syncookies=1               // Kali Linux는 이미 설정되어 있음








'등등 > 네트워크 시스템 보안' 카테고리의 다른 글

wireshark  (0) 2022.06.23
네트워크 시스템 보안- 4일차  (0) 2022.05.09
네트워크 시스템 보안 - 1일차  (0) 2022.05.03
네트워크 시스템 보안 - 3일차  (0) 2022.05.02