2008. 4. 2.

Linux scanning sniffing network tuning

<스캐닝, 스니핑, 네트워크 관련 커널 튜닝>
---------------------------------------
~scanning
-개념
공격자가 목표 사이트를 공격하기전 해당사이트의 특징을 확인하는 작업으로 목표사이트내 존재하는 시스템의 통신가능여부, 제공하는
서비스등을 식별하기 위함
-목적
타겟 시스템에서 어떤 서비스가 동작하는지를 파악
방화벽설치 여부를 확인
시스템 기종 (linux,sparc,window) 파악
접속 가능한 ip 확인
운영체제의 정보를 파악
-nmap 은 스캐닝 도구로 자주 사용되는데 그 이유는 가장 많은 스캐닝 기법을 적용할 수 있는 도구 이기 때문이다.




~홈페이지
http://www.insecure.org


~다운로드 위치
http://download.insecure.org/nmap/dist/nmap-4.20-1.i386.rpm


~설치방법
rpm -Uvh 또는 ivh nmap-4.20-1.i386.rpm


---------------------------------------

[fedora]
#rpm -qa | grep nmap
#nmap
옵션 출력

#nmap -V
버전 출력


Q)ftp 서버에서 nmap-4.20-1.i386.rpm 을 다운받아
프로그램을 업그레이드 하시오







#ftp 121.160.70.177
myhat1 login
>dir
>mget nmap*
>by
#ls
#rpm -Uvh nmap-4.20-1.i386.rpm
#nmap -V








#nmap -v -sS -O(영문 O) 192.168.50.20

-v verbose 자세히 출력
-sS TCP SYN stealth port scan
-O 운영체제 예측





#nmap -v -sS -O -sV 192.168.50.20

-sV 서비스 버전 스캔








~스캐닝 원리

A syn(->) B
syn+ack(<-)
ack(->)




#nmap






#nmap localhost
자신의 컴퓨터 포트 스캔



#netstat -atn





~참조사이트
http://comefeel.com/tt/comefeel/69
http://saylon.egloos.com/74972







Q)
localhost를 대상으로 포트 10 ~ 60000 까지 스캐닝 하시오
(#nmap 한 다음 옵션 확인)









[fedora]
#netstat -atn

#nmap localhost
리눅스는 기본적으로 1-1024 포트만 스캔

#nmap -p10-60000 localhost
(또는 nmap -p 10-60000 localhost)


#nmap -v -sS -O -p1-65535 192.168.50.20


#nmap -O 192.168.50.1





Q)
cent 에서 nmap-4.20 버전을 wget 이용하여 설치하고 fedora 를 대상으로 운영체제 추측 및 stealth scan 하기








[cent]
#wget http://download.insecure.org/nmap/dist/nmap-4.20-1.i386.rpm

#ls
#rpm -Uvh nmap-4.20-1.i386.rpm

#nmap
#nmap -V

#nmap -sS -O 192.168.50.10
#nmap -p 10-25 localhost
#nmap -sR 192.168.50.10
RPC 스캔
#nmap -sF 192.168.50.10
FIN 스캔
#nmap -O 192.168.50.1 -o scan.txt
-o(소문자) 파일로 저장
#ls
#cat scan.txt



~참조사이트
http://insecure.org/nmap/man/man-os-detection.html
http://www.nwlab.net/tutorials/portscanner/nmap-tutorial.html

































































































































~tcpdump 를 이용한 sniffing
-sniffing : 같은 네트워크 상(LAN 환경)에 지나가는 모든 패킷을 capture


[fedora]
vsftpd 이용하여 ftp 서버 구축

#service vsftpd start
#nmap localhost
#netstat -ntlp
21


telnet접속
[xp] -----------------> [fedora]
[cent]
tcpdump로 스니핑








[cent]
#tcpdump port 23 and host 192.168.50.10 -w telnet.sniff


[xp]
도스창 실행
c:\>telnet 192.168.50.10
apple 로그인
$id
$w
$exit

[cent]
ctrl + c
스니핑 중지







#ls
#cat telnet.sniff
#tcpdump -r telnet.sniff
-r 파일로 저장된 tcpdump 파일 읽기
#tcpdump -r telnet.sniff | more

---> 이더리얼을 이용하면 쉽게 분석 할 수 있다.








~tcpdump 플래그(flags)

TCP플래그 TCPDUMP플래그 플래그의 의미

SYN S
SYN패킷, 접속요청을 할 때 보내는 패킷을
말한다. TCP접속시에 가장먼저 보내는 패킷이다.

ACK ack
ACK패킷, 상대방으로부터 패킷을 받은 뒤에 알려주는
패킷을 말한다. 다른 플래그와 같이 출력되는 경우도 있다.

FIN F
접속종료를 위한 플래그로 이 패킷을 보내는 곳이 현재
접속하고 있는 곳과 접속을 끊고자 할 때 사용한다.

RESET R
이 패킷을 보내는 곳이 현재 접속하고 있는 곳과
즉시 연결을 끊고자 할 때 사용한다.

PUSH P
데이터를 즉시 목적지로 보내라는 의미이다. 텔넷과 같이
상호작용이 중요한 프로그램의 경우 빠른 응답이 중요하다.
이때 사용하는 플래그이다.

URGENT URG
긴급한 데이터는 다른 데이터에 비해 우선순위가 높아야 한다.
예를 들어 ftp로 자료를 받고 있는 도중
CTRL+C 를 받으면 즉시 자료받기를 중단해야 하는 것처럼
이 때 사용하는 플래그이다.

Placeholder .
패킷이 SYN, FINISH, RESET, PUSH등의 플래그가
없는경우이 플래그가 세팅된다.
이 플래그는 ACK플래그와 함께 사용되는 경우도 있다.

----------------------------------------


~스니퍼 2(이더리얼)
홈페이지 : http://www.ethereal.com

-2003 부팅
바탕화면의 이더리얼 설치 프로그램 실행
Next
I Agree
Next
Next
Next
Install

Winpcap도 설치
Next
I agree
finish

next
finish



바탕화면의 이더리얼 아이콘 더블클릭
위쪽 메뉴표시줄-capture-interfaces
192.168.50.30 옆의 capture 버튼 클릭



xp 에서 fedora 로 ftp 익명연결 로그인
c:\>ftp 192.168.50.10
User : anonymous
Password : aa@aa.com(임의의 이메일 입력)
>dir
>by



이더리얼 스니핑 stop





캡처된 화면에서 4번째 라인 클릭
Analyze-Follow tcp stream 클릭
---> 아이디와 패스워드까지 알 수 있다.







[2003]
이더리얼 3번재 메뉴 표시줄 [clear] 버튼 클릭
다시 스니핑 시작



cent 에서 fedora 로 ssh 로그인 시도
[cent]
#ssh 192.168.50.10
root login test
#w
#exit

[2003]
이더리얼 스니핑 stop

결과분석 ---> 암호화된 데이타라서 아이디와 패스워드를 알 수 없다.










Q)
2003 에서 cent 에 있는 telnet.sniff 를 ftp 서비스 이용하여
다운받은 후 이더리얼로 분석하시오
(계정은 apple 을 이용하기)

















[cent]
(apple 계정없으면 추가하고 암호 설정하기)
#cd
#pwd
(/root)
#ls
#cp telnet.sniff ~apple
#cd ~apple
#pwd
(/home/apple)
#ls
#yum -y install vsftpd
#service vsftpd start

[2003]
웹브라우저 실행하고 주소창에 다음 입력
ftp://apple@192.168.50.20
telnet.sniff 를 바탕화면에 다운


---------------------------------------







































































































































~네트워크 관련 커널 튜닝
참조사이트
http://ipsysctl-tutorial.frozentux.net/chunkyhtml/index.html
http://www.haansoftlinux.com/service/technical/sw_ServerControl.php?&page=2&category=SServerControl
(7번 글 선택)



-커널에 설정된 값을 확인하기 위한 방법
/proc/sys/net/ipv4/*
sysctl -a


-ip_default_ttl
TTL(time to live)은 ip 패킷의 생존시간을 의미하며 하나의 라우터를
지날 때마다 1씩 감소
TTL 값은 1~255 사이의 값을 사용하는데 리눅스는 기본값으로 64를 이용


-net.ipv4.tcp_syncookies
유명한 DoS 공격의 한 형태로 syn attack 이라고 하는데 시스템에서 client 를
위해 설정된 자원을 무의미한 연결로 채워 시스템을 마비시키는 공격의 일종




Syncookies('신쿠키'라고 발음한다)는 'Three-wayhandshake' 진행과정을 다소 변경하는 것으로 Alex Yuriev와 Avi Freedman에
의해 제안되었는데, TCP 헤더의 특정한 부분을 뽑아내어 암호화
알고리즘을 이용하는 방식으로 Three-way Handshake가 성공적으로
이루어지지 않으면 더 이상 소스 경로를
거슬러 올라가지 않는다.
따라서 적절한 연경 요청에 대해서만 연결을 맺기 위해 리소스를
소비하게 되는 것이다.









[fedora]
#sysctl -a
시스템 설정값 모두 출력
#cat /etc/sysctl.conf
커널 설정파일


#sysctl -a | grep default_ttl
64

#echo 123 > /proc/sys/net/ipv4/ip_default_ttl
---> (1번)

#sysctl -a | grep default_ttl
123

(1번) 은 일회성이고
/etc/sysctl.conf에 적어 주어야 리부팅해도 적용된다.








[xp]
c:\>ping localhost
c:\>ping 192.168.50.20
c:\>ping 192.168.50.10

[cent]
#nmap -O 192.168.50.10



---> /etc/sysctl.conf 파일을 직접 다 적어주는 것보다
리다이렉션을 이용해서 값만 변경해주는
방법이 안전하다.







[fedora]
#sysctl -a | grep default_ttl
#sysctl -a | grep default_ttl >> /etc/sysctl.conf

#vi /etc/sysctl.conf
:set nu
:24
ttl 값 120 으로 수정

#reboot




[xp]
ping 192.168.50.10
ping 192.168.50.20




~다시 원래대로 설정(sysctl.conf 에서 ttl 라인 삭제)




~외부 ping에 응답안하도록 설정하기
[xp]
c:\>ping 192.168.50.10
---> O


[fedora]
#cat /proc/sys/net/ipv4/icmp_echo_ignore_all
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#cat /proc/sys/net/ipv4/icmp_echo_ignore_all






[xp]
c:\>ping 192.168.50.10
---> X






icmp_echo_ignore_all
--->값이 1이면 핑에 응답안함, 값이 0이면 핑에 응답
ping 명령에 대한 반응을 하지 않도록 설정한다면 서버가 서비스 중인지 판단하지 못하도록 할수 있다



Q)다시 ping 에 응답하도록 설정하기










~Attribute 설정하기

-리눅스에는 기본 퍼미션과 별도로 속성이라는 개념이 있다.
-attribute(속성)은 퍼미션(r,w,x)과는 다르다

lsattr(속성확인), chattr(변경)

[fedora]
#man chattr
a 추가허용
i 읽기전용

#seq 10
1부터 10까지 숫자 생성

#seq 10 > mytest.txt
#cat mytest.txt





#ll
속성은 ls -l, ll 로 알 수 없다.

#lsattr



#chattr +i mytest.txt
+는 속성추가, -는 제거

#lsattr
#rm mytest.txt
---> X
#echo 22 >> mytest.txt
---> X


#cat mytest.txt
#chattr -i mytest.txt
#lsattr





#rm mytest.txt
y enter
---> O
#ls






#seq 5 > mytest.txt
#chattr +a mytest.txt

#lsattr

#rm mytest.txt
---> X

#echo good >> mytest.txt
---> O , vi 로는 추가안됨
( > 는 덮어쓰기, >> 는 기존의 내용에 추가하기)

#cat mytest.txt

댓글 없음: