외로운 Nova의 작업실

정보보안기사 필기 - 25(네트워크 기반 프로그래밍 활용) 본문

Certification/정보보안기사

정보보안기사 필기 - 25(네트워크 기반 프로그래밍 활용)

Nova_ 2022. 12. 9. 12:26

- 네트워크 기반 명령어

<연결테스트(ping)>

ping 명령은 인터넷으로 접속하려는 원격 호스트가  정상적으로 운영되고 있는지를 확인하는 진단 목적으로 사용합니다. ping 명령은 ICMP를 이용하는 유틸리티이며, Echo Reuquest 타입으로 ICMP 패킷을 전송하고 그 대상 시스템은 Echo Reply 패킷을 보내고 수신하믕로써 접근성을 확인합니다.

 

<ping - 문법>

ping [-option] ip_address | host_name

  • -c : count로 지정한 숫자만큼 패킷을 송수신합니다.
  • -i : wait으로 ICMP 패킷 송신의 대기 시간입니다.
  • -s : size로 송신 패킷의 데이터 크기입니다.

 

<ping - 윈도우 실행 결과 분석>

C:\ ping 192.168.07
pinginng 192.168.0.7 with 32byte of data;

Reply form 192.168.0.7: byte = 32 time = 99ms TTL = 128
Reply form 192.168.0.7: byte = 32 time = 3ms TTL = 128
Reply form 192.168.0.7: byte = 32 time = 4ms TTL = 128
Reply form 192.168.0.7: byte = 32 time = 3ms TTL = 128

Ping statistics for 192.168.0.7:
Packets: sent = 4, received = 4, lost = 0<0% loss>,
Approximate round trip times in mill-seconds:
minimum = 3ms, maximum = 99ms, average = 27ms

pinginng 192.168.0.7 with 32byte of data; : 32byte는 패킷의 길이를 나타내는데, 윈도우는 32바이트 리눅스등 다른 운영체제는 대부분 56바이트를 보냅니다. 또한 TTL의 경우 100번 정도면 윈도우계열, 200번 정도면 유닉스 계열입니다. 유닉스계열은 TTL을 255로 사용하고 윈도우는 128을 사용하기 때문입니다.

 

<경로추적(traceroute)>

네트워크 라우팅 문제점을 찾아내는 목적으로 많이 사용합니다. traceroute는 UDP 패킷의 TTL을 하나씩 증가시키면서 보냅니다. 우연히 도달하는 것을 방지하기위해 UDP  패킷을 정확히 3개 보내며 이후에 목적지에 도달하면 Unreached Port라는 메시지를 받게됩니다. 이 이유는 사용불가능한 33434 포트번호로 패킷을 보냈기때문입니다. traceroute 결과에서 응답시간이 *로 표시되는 경우 보안상으로 패킷이 차단되었거나 문제가 발생한 경우로 볼 수 있습니다.

 

<traceroute - 문법>

traceroute [-option] ip_address | host_name [packet_len]

  • -m : max_hop으로 최대 TTL을 지정합니다.
  • -p : port로 UDP포트를 지정합니다. 디폴트는 33434번입니다.
  • -q : n_queries로 한 지점마다 확인하는 횟수를 지정합니다.
  • -w : wait_time으로 탐색중 응답을 기다리는 시간입니다.
  • packet_len : 패킷의 크기입니다.

 

<네트워크 인터페이스 진단(netstat)>

netstat 명령은 unix 시스템의 tcp/ip 프로토콜 진단시 다양한 용도로 사용합니다. LAN 카드에대한 성능정보, 시스템의 라우팅 정보, 소켓 사용 정보등 네트워크 정보를 제공합니다.

 

<netstat - 문법>

netstat [-option]

  • -r : 라우팅 정보를 출력합니다.
  • -i : 네트워크 인터페이스에대한 정보를 출력합니다.
  • -s : 각 네트워크에대한 통계 정보를 출력합니다.
  • -a : 모든 소켓 정보를 출력합니다.
  • -n : 네트워크 주소를 숫자로 나타냅니다.
  • 옵션 미지정 : unix 시스템에 생성된 네트워크의 연결정보를 출력합니다.

 

<netstat - 결과 분석>

  • Proto : 프로토콜의 종류입니다.
  • Recv-Q : 버퍼에 수신된 데이터의 크기입니다.
  • Send-Q : 송신 버퍼에 저장된 데이터의 크기입니다.
  • Local-address : 로컬 호스트의 IP주소와 응용 프로그램이 사용하는 포트입니다.
  • Foreign Address : 원격 호스트의 IP주소와 응용프로그램 포트입니다.
  • State : 연결과 관련된 소켓 상태입니다.

 

<netstat - State 값>

  • LISTEN : 서버 프로그램이 연결요청을 기다리는 상태입니다.
  • SYN-SENT : 클라이언트 프로그램이 원격 호스트에 연결을 요청한 상태입니다.
  • SYN_RECV : 서버가 클라이언트로부터 연결요청을 받아 클라이언트에 응답하였지만 클라이언트의 확인메시지를 받지 않은 상태입니다.
  • ESTABLISHED : 클라이언트와 서버 프로그램이 서로 연결된 상태입니다.

 

  • FIN-WAIT1 : 한쪽 으용프로그램이 연결 종료를 요청한 상태입니다.
  • CLOSE-WAIT : 연결 종료 메시지를 수신하고 그에대한 확인메시지를 보낸상태입니다.
  • FIN_WAIT2 : 로컬에서 종료메시지를 전송하였고 원격 호스트에게 확인메시지를 수신하였지만 원격 응용프로그램이 작업을 종료하지않아 원격 호스트의 종결 메시지를 기다리는 상태입니다.
  • LAST-ACK : 원격으로부터 종결 요청을 받고 로컬에서도 회선 종결에 합의한 상태로 이메시지가 수신되면 회선이 종결됩니다.
  • TIME-WAIT : 연결은 종료되었지만 마지막 종료 확인 메시지를 재전송할 경우를 감안하여 당분간 소켓정보를 유지하고 있는 상태입니다.
  • CLOSED  : 완전히 연결이 종료된 상태입니다.

 

<라우팅 테이블 설정(rotue)>

route 명령을 사용하여 라우팅 테이블에 라우팅 경로를 추가하거나 삭제합니다.

 

<route - 문법>

route add [-net | -host] destination [gw gateway] [netmask mask] [[dev] interface]

  • route del [-net | -host] destination [gw gateway] [netmask mask] [[dev] interface]
    add : 라우팅 경로를 추가합니다.
  • del : 라우팅 경로를 삭제합니다.
  • -net | -host : 네트워크이면 net, 호스트이면 host를 지정합니다.
  • gw : 게이트웨이의 ip주소를 gateway 자리에 지정합니다.
  • netmask : 추가하는 라우팅 경로의 netmask를 지정합니다.
  • dev : 인터페이스 장치명을 interface 자리에 지정합니다.

 

<route - 예문>

route add -net 203.249.7.0 netmask 255.255.255.0 gw 192.168.1.100 : 203.249.7.0의 네트워크에 해당하는 ip주소가 오면 192.168.1.100의 게이트웨이로 라우팅 되도록합니다.

 

<네트워크 패킷/로그 분석(tcpdump)>

tcpdump는 네트워크 인터페이스를 거치는 패킷의 내용을 출력해주는 프로그램입니다. 스니핑 도구의 일종으로 모든 패킷의 내용을 도청할 수 있으며 패킷 분석시에 활용할 수 있는 도구입니다. tcpdump는 유닉스, windump는 윈도우에서 사용하며 사용방법은 유사합니다.

 

<tcpdump - 문법>

tcpdump [옵션]

  • -A : 패킷의 내용을 화면에 ASCII로 보여줍니다.
  • -c : 주어진 수의 패킷을 받은 후 종료합니다.
  • -C : 방금 받은 패킷을 저장파일로 만들기전에 파일이 file_size보다 큰지 체크하고 크다면 현재 저장파일을 닫고 새로 하난 엽니다.
  • -D : 패킷을 잡을 수 있는 시스템 상에 가능한 네트워크 인터페이스 목록을 출력합니다.
  • -i : 인터페이스를 정합니다.

<tcpdump - 예문>

tcpdump host 211.47.66.50 and port 80 : 소스나 목적지가 211.47.66.50이고 포트거ㅏ 80인 트래픽을 모니터링 하고자 할때 사용합니다. 

 

<네트워크 인터페이스 설정(ifconfig)>

ifconfig 명령은 네트워크 인터페이스의 설정정보를 알아보거나 ip주소 및 서브넷마스크 등의 설정을 변경할때 사용합니다. 그리고 네트워크 인터페이스를 활성화시키거나 비활성화시키는 기능도 있습니다.

 

<ifconfig - 문법>

ifconfig [device] [ip_address] [nemask mask] [broadcast broadcast_ip] [up|down]

  • device : ip주소를 부여할 장치입니다.
  • ip_address : 인터페이스 ip주소를 지정합니다.
  • netmask : 해당 장치에 부여할 넷마스크를 mask 자리에 지정합니다.
  • broadcast : 로컬 네트워크의 브로드캐스트 주소를 broadcast_ip 자리에 지정합니다.
  • up|down : 장치를 활성화 및 비활성화 시킵니다.

<윈도우 ipconfig>

윈도우는 네트워크 설정에 있어 유닉스와 다릅니다. 윈도우에서는 대부분의 설정과 인자 수정을 윈도우 제어판에서 수행합니다. ifconfig와 유사한 유틸리티는 ipconfig 입니다. 하지만 훨씬 간단하며 옵션의 수도 적습니다.

 

 

Comments