본문 바로가기

해킹-보안

메타스플로잇 피보팅(pivoting) 공격

반응형

이 내용을 악용하여 다른 시스템에 적용하지 않습니다.
그로 인한 법적인 책임은 본인에게 있습니다.
자신이 운영하는 시스템의 보안 취약점을 찾아내는 용도로만 사용하세요.



ி 피보팅(pivoting)


'Pivot' 경유 시스템을 이용하여 목적 시스템을 공격하는 기법이다.
시나리오 기반으로 설명하자면 
해커는 DB 계정 정보를 탈취하려고 하는데 DB 보안이 워낙 강력하여 
직접 접근하기 어려우면 이때 DB 서버와 연결된 다른 취약한 서버를 공략한다.
해커는 취약한 서버를 공격하여 해당 서버를 다리 삼아서 DB 서버의 정보를 탈취하게 된다.

이러한 일련의 과정들이 피보팅이라고 할 수 있다.






ி 피보팅 공격 시나리오


metasploitable에는 톰캣 DVWA(웹 모의해킹 훈련장)가 설치되어 있다.

목적은 metasploitable 데이터베이스에 저장된 DVWA 로그인 계정
metasploitable 시스템의 모든 계정을 탈취해보자.

우선 metasploitable에서 사용하는 mysql의 관리자 계정을 알아내기 위해
MSF에서 mysql 로그인과 관련된 모듈을 찾아서 사용한다. 

search mysql -> use mysql_login -> set 타겟 ip -> exploit
로그인 모듈로 계정을 확인했을 때 아이디와 비밀번호는 콜론으로 구분 짓는다.
저 결과로 봤을 때 아이디가 root이고 비밀번호는 설정하지 않은 것으로 나온다.
관리자가 mysql을 설치하고 초기에 root 사용자의 암호를 따로 설정하지 않은 채
그대로 방치한 것이라고 해석된다.

그 이후 mysql에 직접적으로 미터프리터 셸을 획득하려고 여러 모듈로
취약점 공격을 시도해보았으나 대다수의 모듈이 셸 획득에 실패했다.
이때 피보팅 기법을 사용하여 톰캣을 통하여 mysql에 접근하고자 한다.

이전에 실습했던 톰캣의 업로드 취약점인 tomcat_mgr_deploy를 사용하여
미터프리터 셸을 획득해보자. 
( 자세한 방법은 이전 포스팅에 나와있음 --> https://jdh5202.tistory.com/619 )

그리고 아래와 같이 meterpreter에서 shell 명령을 입력하면
피해지의 시스템 셸로 진입한다.


이렇게 획득한 시스템 셸에는 특정 버그가 존재한다.
해당 버그는 정상적인 명령이랑 비정상적인 명령어를 같이 실행하면
비정상적인 명령어도 같이 실행된다는 점이다.
예를들어 저 버그로 mysql의 DB 목록을 조회한다고 가정했을 때
명령어는 아래와 같이 입력한다.
mysql -u root
show databases;
ls;

앞에 실행할 문구를 적고 뒤에 정상적인 명령어인 ls를 입력하면
앞의 DB를 조회하는 명령이 실행된다.
여기서 비정상적인 명령어라는 것은 명령어가 잘 못 됐다는게 아니라
메타스플로잇으로 상대 정보를 스캔하거나 공격하는 의도를 가졌다는 의미에 가깝다.

이제 시스템 셸에서 DB의 목록을 조회하고
DB의 테이블을 알아내어 계정 정보를 확인해보자.

왼쪽 내용은 아까 언급한 예시의 명령이랑 똑같다.
왼쪽의 SQL 쿼리문은 DB 목록을 조회하는 것이며
DB 목록 중에 시나리오의 목표였던 dvwa라는 DB가 출력되었다.
오른쪽 내용은 dvwa에서 사용하는 테이블을 알아낸다는 뜻이다.
use dvwa; - dvwa 데이터베이스를 연결한다.
show tables; - 연결된 데이터베이스의 테이블을 보여준다.
확인 결과 users라는 테이블이 조회되었다. 
아마도 해당 테이블에 dvwa 사용자 계정 정보가 저장되어 있을 것 같다.

이제 마지막으로 users 테이블의 데이터를 조회하는 쿼리문을 작성한다.
SELECT * FROM users[테이블명];

쿼리 조회 결과 사용자의 계정 정보가 모두 출력된 것을 확인할 수 있다.
그러나 암호는 그대로 노출되면 보안에 취약하기 때문에
패스워드가 해시 방식으로 암호화되어 패스워드 정보를 확인할 수 없다.
하지만 해시를 크랙해주는 사이트가 있다.
아래 사이트에서 해시를 넣고 Crack Hashes 버튼을 누르면
Result에 패스워드가 복호화된 평문으로 출력된다.
https://crackstation.net/


DVWA에서 저 계정 정보로 로그인을 시도해본다.

나머지 해시들도 마찬가지로 다 대입하여 패스워드를 알아낼 수 있다.
하지만 솔트를 추가한 강력한 해시는 크랙 사이트로 알아내기 힘들다.



패스워드 크랙 프로그램


아까는 수동으로 해시값을 크랙 사이트에 일일이 대입하여 알아냈지만
패스워드 크랙 프로그램인 john the ripper를 사용하여
여러 사용자의 계정 패스워드를 한 번에 알아낼 것이다.
우선 john을 사용하려면 패스워드 정보가 담긴 shadow 파일이 필요하다.

metasploitable의 shadow 파일을 얻으려면
post/linux/gather/hashdump 모듈을 사용해야 한다.
저 모듈을 사용하려면 세션이 필요하므로
metasploitable에서 exploit/multi/samba/usermap_script 모듈로
셸을 먼저 획득하자.

smb 취약점 모듈을 이용하여 exploit을 하고 셸을 얻었다면
ctrl+z를 누르고 y를 눌러서 셸에서 빠져나온다.

그 다음 sessions 명령어를 쳐서 연결된 세션의 Id를 확인해보자.


이제 hashdump 모듈을 사용해서 아까 연결된 세션을 set( set session 1 )하고 exploit을 한다. 
그러면 metasploitable의 Unshadowed 파일이 만들어지고 파일 생성 경로가 출력된다. 

파일 생성 경로를 복사해서 다음과 같이 명령을 수행한다.
  john [ Unshadowed 파일 생성 경로를 이 곳에 붙여넣는다 ] 

위 내용은 Unshadow 내에 있는 계정들의 아이디와 비밀번호가 
john에 의해 크랙되어 출력되는 모습이다.
오른쪽에 소괄호로 표시된 항목이 id를 의미하고 그 옆에 항목은 패스워드를 나타낸다.
root 계정은 까다로운 비밀번호 설정때문인지 쉽게 크랙되지 않는 듯 보인다.
끝으로 저기 출력된 계정들을 metasploitable에서 로그인 해보자.



반응형