보안vs해킹2011. 11. 5. 03:41


네이버에서의 해킹의 정의는 '컴퓨터 네트워크의 취약한 보안망에 불법적으로 접근하거나 정보 시스템에 유해한 영향을 끼치는 행위'로 규정하였고, 위키피디아에서는 해커의 개념을 '이득, 저항 또는 도전 등의 이유로 컴퓨터나 컴퓨터 시스템을 파괴하는 행위'로 말하고 있다. 두 거대 백과사전은 해킹에 대해 꽤 부정적 의미를 포함하고 있다.

하지만 원래 해킹에는 악의적인 의미가 없고, 정작 상대방의 시스템에 위해를 가하는 사람들은 cracker라고 부르고, 엘리트하고 우아하게 상대의 시스템을 유린하는 사람들을 해커라 부른다, 라고 주장하고 싶다. 여기서 쓰고자 하는 것도 상대(?), 목표물(?) 혹은 호기심의 대상의 시스템의 취약점을 찾는걸 다루지, SQL Injection이나 CSS (Cross Site Scripting) 같은 내용은 다루지 않으려고 한다. 위와 같은 내용을 공부하고 싶다면 유투브에 널린게 해킹 기술이니 거기서 습득해도 어리버리한 시스템들은 쉽게 낚아서 본인이 script kiddy임을 증명할 수는 있을 것이다.

해킹은 탐색 (Reconnaissance), 스캔 (Scanning), 침입 (Gaining Access), 접속유지 (Maintaining Access), 사후처리 (Covering Tracks)로 EC-Council에서 구분하고 있다.

탐색은 Nmap, hping, ping 등과 같은 툴로 손쉽게 이루어 질 수 있고 합법이다. (#hping 을 통해 5만비트의 데이타를 연속적으로 보내는 것은 불법이다.)

스캔은 Nessus, OpenVAS 등등이 있다. (불법은 아니지만 본인의 결백을 주장할 증거정도는 필요하겠죠 ex. NDA)

침입은 MetaSploit이 가장 많이 쓰이는 툴이다. (남의 네트워크 침입은 악의적이든 아니든 범죄에 속한다. 그리고 생각보다 우리의 통신내용은 구글신께서 다 감청당하고 있으니 클라이언트가 원하면 당신은 의외로 쉽게 잡힌다.)

접속유지는 컴맨드를 통해서 이루어지므로 딱히 툴이라고 볼게 없고, 사후처리도 알아서 지나갔던 자리 지우고 나오면 되는 거다.

앞으로 적어볼 내용들은 각 툳들의 사용법을 알아보면서 그러한 것들을 어떻게 방어하는지 Snort를 통해 보도록 하겠다.

참고1. BackTrack이라는 라이브DVD가 있다. 모든 보안이나 해킹에 관심있는 사람이라면 꼭 깔아봐야하는 OS이니 지금 읽고 계신 분들도 꼭 깔아서 설치해보기 바란다.

참고2. NDA (Nondisclosure Agreement)를 클라이언트와 작성하고 해킹하는게 법적인 분쟁을 피하는 가장 정석이다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
CEH Chap 1. hping?  (0) 2011.11.07
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
Posted by 구텐모르겐
IT 이야기2010. 6. 17. 06:10
사용자 삽입 이미지


Cisco 2511 configuration

cl-2513-2A#write terminal
Building configuration...
Current configuration:
!
version 11.3
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname cl-2513-2A
!
!--- Override the default policy and use
!--- preshared keys for authentication.

crypto isakmp policy 1
authentication pre-share
group 2
!

!--- Define our secret shared key so
!--- you do not have to use RSA keys.

crypto isakmp key sharedkey address 20.20.20.20
!

!--- These are the authentication and encryption
!--- settings defined for "auth2",
!--- which is later applied to the crypto map.

crypto ipsec transform-set auth2 esp-des esp-sha-hmac
!

!--- The crypto map where you define your peer,
!--- transform auth2, and your access list.

crypto map test 10 ipsec-isakmp
set peer 20.20.20.20
set transform-set auth2
match address 133
!
interface Ethernet0
ip address 50.50.50.50 255.255.255.0
!
interface Serial0
ip address 20.20.20.21 255.255.255.0
no ip route-cache
no ip mroute-cache

!--- Nothing happens unless you apply
!--- the crypto map to an interface.

crypto map test
!
ip route 0.0.0.0 0.0.0.0 20.20.20.20
!

!--- This is the access list referenced
!--- in the crypto map; never use "any".
!--- You are encrypting traffic between
!--- the remote Ethernet LANs.

access-list 133 permit ip 50.50.50.0 0.0.0.255 60.60.60.0 0.0.0.255
!
line con 0
line aux 0
line vty 0 4

login
!
end

Cisco 2516 configuration



cl-2513-2B#show run
Building configuration...

Current configuration:
!
version 11.3
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname cl-2513-2B
!
ip subnet-zero
!

!--- Override the default policy and use
!--- preshared keys for authentication.

crypto isakmp policy 1
authentication pre-share

group 2

!--- Define the secret shared key so you
!--- do not have to use RSA keys.

crypto isakmp key sharedkey address 20.20.20.21

!--- These are the authentication and encryption
!--- settings defined for "auth2,"
!--- which is later applied to the crypto map.

crypto ipsec transform-set auth2 esp-des esp-sha-hmac

!--- The crypto map where you define the peer,
!--- transform auth2, and the access list.

crypto map test 10 ipsec-isakmp
set peer 20.20.20.21
set transform-set auth2
match address 144
!
interface Ethernet0
ip address 60.60.60.60 255.255.255.0
no ip directed-broadcast
!

!--- Nothing happens unless you apply
!--- the crypto map to an interface.

interface Serial0
ip address 20.20.20.20 255.255.255.0
no ip directed-broadcast
no ip route-cache
no ip mroute-cache
clockrate 800000
crypto map test
!
ip classless
ip route 0.0.0.0 0.0.0.0 20.20.20.21
!

!--- This is the access list referenced
!--- in the crypto map; never use "any".
!--- You are encrypting traffic between
!--- the remote Ethernet LANs.

access-list 144 permit ip 60.60.60.0 0.0.0.255 50.50.50.0 0.0.0.255
!
line con 0
transport input none
line aux 0
line vty 0 4
login
!
end
Posted by 구텐모르겐
IT 이야기2009. 9. 15. 08:22
네트웍을 감독하는데 있어서 가장 먼저 실행되어야 할 것은 외부에 관심대상이 될만한 호스트를 두지 않는 것이다. 모든 아이피에 대한 모든 포트를 검색한다는 것은 무의미하다. 물론 목적에 따라서 그 관심 대상이 달라지기는 하지만, 관리자의 입장에서는 제공하는 서비스에 관심이 있을것이고 네트웍 감독자는 아이피에 해당되는 장비들에 관심이 있을 것이다. 일반적으로 관리자는 ICMP Ping을 통한 로컬 네트웍에 관심이 있겠지만 외부검시관들(external penetration tester)은 방화벽을 피할수 있는 다양한 방법에 관심이 있을 것이다.



호스트 컴퓨터 탐색의 방법은 너무 다양해서 Nmap은 사용자가 커스터마이즈 사용을 제공하고 있다. 호스트 탐색은 ping이라고도 불리기도 하지만 이것은 ICMP echo request 보다는 훨씬 높은단계의 기술을 요구한다. 사용자들은 -sL 옵션을 통해 ping을 생략할수도 있고 -PN 옵션을 통해 작동을 제한 할수도 있고, 또는 임의적인 다양한 multi-port TCP SYN/ACK, UDP, SCTP,INIT, ICMP probe등을 사용할 수도 있다. 이러한 무작위적인 서치는 해당 아이피의 호스트에 active된 장비들에 대한 응답을 받기 위해서이다. 일반적으로 IP의 일부만 사용되어지는게 대부분이고, 특히나 10.0.0.0/8과 같은 서치에서 보면 알 수 있다. 필자의 회사에서도 10.0.0.0/8은 16백만개의 아이피를 사용할 수 있지만 검색결과 천여개의 IP만 사용되어짐을 알 수 있었다. 호스트 컴퓨터 탐색은 이렇게 간혈적으로 사용되어지는 IP들 중에서 사용되어지는 호스트를 검색해준다.

만약 호스트 검색 옵션이 사용되지 않으면 Nmap은 ICMP echo request를 보내고, TCP SYN패킷을 443포트로 보내고, 포트 80번에는 TCP ACK패킷을 보내고 ICMP timestamp request를 보낸다. 이러한 명령어는 -PE, -PS443 -PA80 -pp 옵션이다. 예외적으로 ARP스캔은 로컬 이더넷 네트웍에 사용된다. 범용적 Unix shell사용자들은 기본적으로 80포트와 443포트로 SYN패킷을 보낸다. 이러한 호스트 검색은 로컬네트웍에서는 충분할지 몰라도 보안감사를 위해서라면 좀 더 포괄적인 검색이 필요하다.

-P* 옵션으로 ping 타입을 정할수 있고 다양한 TCP ports/flags와 ICMP 코드를 통해서 방화벽을 뚫을 수 있다. 또한 ARP discovery (-PR)은 기본으로 설정되어 있는데 이는 -p*옵션보다 훨씬 빠르고 효과적이다.

기본적으로 Nmap은 호스트 검색이 시행되고 그 후에 온라인으로 되어 있는 컴퓨터들에 대해 포트검색이 실행된다. -sP옵션을 통해 호스트 검색을 어떻게 하는지 알 수 있고, -PN을 통해 호스트 검색을 생략하고 바로 포트검색을 할 수 있다. 다음과 같은 옵션들은 호스트 검색에 사용되어지는 대표적인 값이다.

-sL (리스트 스캔) 해당네트웍에서 간단한 호스트 정보만을 제공하고 타켓 호스트에는 패킷을 보내지 않는다. 기본적으로 Nmap은 호스트의 이름을 알기 위해 reverse-DNS를 내보낸다. 때로는 간단하게 정리된 정보가 더 유용하게 사용되어 지기도 한다. 예를 들어 fw.chi라는 시카고에 있는 파이어월에 모든 IP의 포트에 대해 스캔할수도 있지만 해당 리스트 스캔을 통해 목표 호스트의 액티브 여부를 알 수 있다. 만약 당신이 알지 못하는 호스트 이름이 나온다면 당신은 해당 호스트에 대해 좀더 조사해볼 가치를 느낄 것이다.

리스트 스캔이 목표 호스트에 대한 간략한 정보를 나타내지만 포트스캔, OS검색과 같은 높은 레벨의 스캔은 할 수 없고 ping스캔도 함께 사용될 수 없다. 만약 ping스캔은 적용시키고 싶지 않다면 -PN 옵션에 대해 자세히 읽어보라

-sP (핑스캔) 이 옵션은 Nmap을 통해 호스트를 탐색하고 액티브한 호스트의 리스트를 출력하는 값이다. traceroute나 NSE host script와 같은 옵션들도 함께 상용 가능하지만 그 이상은 아니다. 이것은 리스트 스캔과 같이 사용되기도 하지만 리스트 스캔보다는 좀더 직관적으로 출력된다. 이것은 타겟 호스트에게 의심을 줄만한 검색은 되도록 하지 않으면서 스캔을 한다. 공격자에게는 어떠한 호스트가 살아 있는가가 중요하지 모든 호스트의 이름과 IP가 중요한 것은 아니다.

시스템 관리자들도 이 옵션을 가치있게 사용될 수 있는데 살아있는 호스트의 검색이나 서버나 네트웍의 가용성에 대해 알아볼 수도 있다. 이것은 종종 ping sweep이라 불리기도 하고 pinging the broadcast보다는 좀더 유용하게 사용될수 있는데 보통의 호스트들은 broadcast에 대해서는 응답을 하지 않기 때문이다.

-sP옵션은 ICMP echo request, 443포트를 통해 TCP SYN을 보내고 80포트를 통해 TCP ACK를 보내고, ICMP timestam request를 기본으로 보낸다. 권한이 없는 사용자가 해당 옵션을 사용할때는 SYN패킷만 타겟 포트 80과 443에 보내지게 된다. 권한이 있는 사용자가 핑스캔으로 로컬 네트웍을 스캔할때는 --send-ip를 설정하지 않는 이상 ARP request를 보내게 된다. 활용적인면에서 핑스캔은 다른 탐색옵션과 함께 사용될수 있다. 어떠한 탐색타입과 옵션이 사용된다면 기본으로 적용된 옵션에 덧붙여 출력된다. 강력한 방화벽을 사용하는 네트웍을 탐색할때는 이 옵션이 효과적이다. 그렇지 않다면 방화벽이 응답하지 않음으로 호스트들은 스캔에서 많이 누락되어질 것이다.

-PN부터는 내일 다시 ...

원본링크:http://nmap.org/book/man-host-discovery.html
Posted by 구텐모르겐
IT 이야기2009. 8. 29. 04:51
Nmap에 나온 모든 명령어들은 목표 호스트에 대해 알아보기 위한 것이다. 이에 대한 가장 간단한 방법은 해당 호스트의 IP 어드레스나 호스트이름을 넣는 것이다.


NMAP 'Gridsweep' Scan with Decoys


때로 우리는 인접한 모든 네트웍을 스캔해 보고 싶기도 한데 nmap은 CIDR형태의 주소형태를 이용한다. Nmap 이용시에 IP뒤에 /넘버 혹은 호스트 이름을 입력하면 자동으로 해당 주소를 검색하게 된다. 예를 들어 192.168.10.0/24는 192.168.10.0(바이너리:11000000 10101000 00001010 00000000) 192.168.10.255(바이너리:1100000000 10101000 00001010 11111111)부터 256개의 호스트를 검색하게 된다. 192.168.10.40/24도 정확히 같은 네트웍 대역을 스캔하게 된다. 또한 호스트 이름 scanme.nmap.org은 64.13.134.52라는 IP르르 가지고 있는데 scanme.nmap.org/16이라고 스캔하게 되면 64.13.0.0에서 64.13.255.255까지 총 65,536개의 IP를 스캔하게 된다. 가장 작은 값은 /0으로 표현되고 이는 전세계의 모든 네트웍을 스캔하게 될 것이고 가장 큰 값은 /32이고 이는 해당 호스트만을 스캔하게 될 것이다.

CIDR의 적용은 간단하지만 유용하지는 못하다. 예로써, 만약 당신이 192.168.0.0/16을 스캔하고 싶지만 .0과 .255가 broadcast나 서브넷으로 사용하고 있어 생략하고 싶을 때가 있다. Nmap은 octet range 어드레싱으로 이를 해결하고 있다. 일반적인 IP를 사용하기 보다는 콤마로 구분시켜 각 IP를 192.168.3.1, 192.168.4.1, 192.168.5.1, 192.168.6.1와 같이 적어주는 것이고 0과 255의 호스트는 생략된다. 또한 192.168.3-5,7.1이라고 하면 192.168.3.1, 192.168.4.1, 192.168.5.1 그리고 192.168.7.1이 스캔되게 된다. IP영역의 설정의 마지막 옥텟으로만 결정되는 것이 아니다. 0-255255.01-255.13.37이라고 하면 전세계에 있는 13.37으로 끝나는 모든 네트웍을 스캔하게 된다. 이러한 광범위한 스캔을 통해 nmap은 서베이나 리서치에 사용될 수 있다.

IPv6는 전체 주소를 써 주어야만 하고 CIDR은 사용될수 없으므로 nmap으로는 그다지 효용도가 높지 않다.

Nmap은 또한 여러개의 호스트를 옵션을 통해 서치할 수 있고 똑같은 포맷일 필요는 없다. 예를 들어 nmap scanme.nmap.org 192.168.0.0/8 10.0.0.1,3-7 과 같이 표현하면 된다.

대게 목표 호스트는 명령어에 입력해야 하지만 다음과 같이 목표 호스트를 정의해 줄수도 있다.

-iL (Input from list)
을 통해 자세한 내용을 알 수 있다. 거대한 네트웍을 스캔하는 것이 부담스러운 일이기도 하지만 또한 필요한 일이기도 하다. 예를 들어 DHCP서버가 분배한 10,000개의 호스트를 스캔하고 싶을 것이다. 혹은 인가받지 않은(unauthorized) 호스트들은 제외하고 스캔하고 싶을 것이다. 이럴땐 -iL옵션을 이용해서 스캔할 수 있고 IP 어드레스, 호스트 이름, CIDR, Ipv6, 옥텟 범위의 내용이 파일을 통해 저장되게 되고 각각의 값은 스페이스, 탭 혹은 새로운 줄로 분류된다. 하이픈(-)을 이용해서 입력하게 되면 일반적인 파일의 형태가 아닌 nmap의 표준 형태로 입력할 수 있기도 하다.

-iR (무작위 탐색)
인터넷 관련 서베이나 리서치를 한다면 아마도 임의로 목표 호스트를 설정하고 싶을 것이다. 은 생성할 IP어드레스의 갯수를 나타내고 사설IP, 멀티케스트 그리고 할당되지 않은 IP에 대해서는 생략될 것이다. 0을 입력하면 영원히 스캔을 멈추지 않을 것이다. 만약 이것을 사용하면 다른 네트웍 관리자가 불평할지도 모르니 조심히 사용해야 한다. 만약 당신이 정말로 지루한 하루를 보내고 있다면nmap -sS -PS80 -iR 0 -p 80과 같은 스캔을 통해 무작위적으로 웹서버를 탐험하게 될 것이다.

--exclude [,[,...]] (열외)
콤마로 구분되는 IP나 호스트 이름들은 스캔에서 제외된다. 이것은 일반적인 스캔 방식이므로 CIDR이나 옥텟방식으로의 나열이 가능하다. 이 옵션을 통해 우리는 중요한 임무를 하고 있는 서버를 건들지 않도록 하게 할 수 있다.

--excludefile (파일을 통해 열외 나열)
--exclude 와 같은 옵션이지만 이는 해당 파일을 통해 읽어들이게 되고 호스트들은 콤마, 스페이스, 탭 등으로 나뉘어져 있다.

원문링크:http://nmap.org/book/man-target-specification.html
Posted by 구텐모르겐