기본 콘텐츠로 건너뛰기

Oracle Database 관리자 계정 훔치기

Oracle Database란 미국의 기업에서 개발한 데이터베이스 관리 시스템으로, 전세계 많은 기업들이 이 시스템을 사용하여 데이터베이스를

관리하고 있다.

많은 기업에서 Oracle을 이용하고 있기 때문에, 해커들 역시 이러한 정보를 빼내기 위해 Oracle에 대한 취약점을 찾기 위해 주력하고 있다.

본 문서에서는 Oracle을 사용하는 목표 서버에 대해 무차별 패스워드 대입 방법을 통해 크랙하는 방법과 그에 따른 보안 방법도 알아보고 있다.

원격으로 Oracle DB에 연결하려면 SID, 사용자 이름, password, IP 주소 알아야 한다.

SID가 관리자에 의하여 수정되었다면 sidguess를 이용하여 크랙을 진행하여야 한다.


[그림 1] sidguess를 통한 SID 획득

Oracle에는 여러 개의 기본 계정이 존재하는데, 일반적으로 Oracle DB 관리자는 기본 계정에 대해 패스워드를 수정함으로 보안에 대비한다.

이 때문에 무차별 대입을 통하여 패스워드를 크랙하여야 한다.

DB에 접속한 후 일반적으로 기타 사용자의 password Hash 값을 획득하는 것을 선택한 다음 로컬 Rainbow crack을 한다.

만약 동일한 내부망에 기타의 Oracle DB가 있으면 패킷을 캡쳐하여 기타 사용자의 Oracle 로그인 인증을 기다려 정보를 획득한 다음 크랙할 수 있다.

아래에 해당 3가지 방법및 관련되는 도구의 사용에 대하여 설명하겠다.

Oracle 패스워드에 관련한 기초 지식

1) 표준적인 Oracle 패스워드는 영문 자모,숫자, #, (_), ($)부호로 구성되며 패스워드 최대 길이는 30 문자이다.
Oracle 패스워드는 “$”, “#”, “_” 혹은 임의의 숫자로 시작할 수 없으며, 패스워드는 “SELECT”, “DELETE”, “CREATE”와 같은
Oracle/SQL 키워드를 포함하지 못한다.

2) Oracle의 약한 알고리즘 암호화 구조: 두 개의 동일한 사용자 이름과 패스워드가 두 대의 다른Oracle DB 컴퓨터에서 같은 Hash 값을 구비한다. 이런 Hash 값은 SYS.USER$ 리스트에 저장된다. DBA_USERS와 같은 유형을 통하여 액세스를 시도할 수 있다.

3) Oracle 디폴트 설정에서 각각의 계정은 만약 10번 로그인 실패하면 해당 계정은 Lock이 되게 된다.
그러나 SYS 계정은 Oracle DB에서 최고 권한이 있기에 Oracle DB에 대하여 부팅/종료 등 임의의 조작을 진행할 수 있다.
SYS 계정은 Lock이 되었다 하여도 계속 DB를 액세스 할 수 있다.

1. 원격 무차별 대입 크랙

위의 세 개의 기초 지식으로부터 원격으로 Oracle을 크랙하는 제일 좋은 계정은 SYS이다.

해당 계정은 영원히 유효하기 때문이다.

Oracle10g에서 이전의 버전은 설치할 때 SYS의 디폴트 패스워드를 수정하라는 제시를 하지 않는다.

Oracle10g는 패스워드 수정을 제시하지만 패스워드의 난수화를 검사하지 않는다.


[그림 2] Oracle 10g 설치시 패스워드 난수화에 대한 경고를 하지 않음

Orabrute 툴을 사용하여 원격 크랙을 진행할 수 있다.

해당 툴을 사용할 때 사전에 시스템에 SQLPLUS를 설치하여야 한다.

해당 툴의 원리는 아주 간단하다.

 SQLPLUS를 call한 다음 로그인 인증을 진행하는 것이다.

계정 선택은 SYS, 패스워드는 password.txt중의 패스워드 단어이다.

성공적으로 로그인을 하면 selectpassword.sql 스크립트를 call하여 SYS.USER$ 리스트의 기타 사용자의 Hash 값을 획득한 다음 프로그램에서

로그아웃한다.

여기에서 주의하여야 할 점은 두번째로 Orabrute 를 실행할 때에 동일한 디렉터리에서 처음에 Orabrute 를 실행할 때 생성된

thepasswordsarehere.txt와 output.txt 파일을 삭제하거나 이동시켜 두어야 한다.

Orabrute 사용 방법:
orabrute <hostip> <port> <sid> <millitimewait>



[그림 3] orabrute 실행시 화면


[그림 4] orabrute 실행시 생성된 파일

Orabrute 크랙 속도는 비교적 느리기 때문에 다른 방법으로 할 수도 있다.

만약 Oracle의 DB 버전이 Oracle10g이면 디폴트로 8080포트를 통하여 DB에 대하여 원격 관리를 할 수 있는 WEB Interface를 
자체적으로 가지고 있다.



[그림 5] Oracle 원격 관리 WEB Interface

http://ip:8080/oradb/public/global_name을 접속할 시 인증 정보가 나타나는데, 이런 HTTP의 기본

인증은 툴을 이용하여 신속하게 크랙 할 수 있다.

여기에서 선택한 것은 그림 페이지 wwwhack이다.

사용자 이름을 설정하고 사전을 선택하면 크랙 할 수 있다. 속도는 Orabrute 를 통하여 크랙하는 것보다 빠르다.



[그림 6] wwwhack을 이용한 인증 정보 크랙

2.DBA 권한으로 로그인 한 후 크랙

원격 로그인 계정을 획득한 후 Checkpwd를 사용하여 DB의 모든 생략한 사용자의 디폴트 패스워드를 인증할 수 있다.

Checkpwd 는 원격 크랙을 이용하는 것이고, 속도는 비교적 빠르다. 각각의 계정의 상황(EXPIRED, LOCKED)을 정확하게 볼 수 있다.


Checkpwd 의 사용 방법:
Checkpwd 
username/password@//ip:port/sidpasswordfile


[그림 7] Checkpwd 실행시 화면

SQLPLUS를 사용하여 직접 Oracle DB에 로그인 한 다음 select username,password form dba_users

명령을 사용하여 DB의 사용자 이름과 패스워드를 검색할 수 있다.

다음 로컬에서 Cain을 사용하여 크랙한다.


[그림 8] 패스워드 Hash 값 획득 후 Cain을 통해 크랙

로컬에서 크랙하는 속도는 아주 빠르다.

사전식 대입 방법을 사용할 것을 건의한다.

Cain에서 Cracker 탭을 클릭한 다음 마우스의 오른쪽 키로 클릭하기 전에 사용자 이름과 Hash 값을 도입하고

“Dictionary Attack” 옵션을 선택하면 사전식 대입을 통한 크랙을 할 수 있다.


[그림 9] Dictionary Attack 옵션 선택



[그림 10] Crack된 화면

사전을 통한 무차별 대입 방법이 효과가 없을 때 RainBow Crack을 사용하여 크랙 할 수 있다.

Cain는 Rainbow 테이블 생성기를 자체 가지고 있다.

Winrtgen을 open하고 “AddTable”를 클릭한 다음 “Hash”에서 Oracle를 선택한다.

“Min Len”, “Max Len”는 각각 password길이의 최소치와 최대치를 표시한다.

“Charset” 패스워드 중 문자 집합을 선택한 다음 “OK”를 클릭하면 Rainbow 테이블을 생성한다. [그림 11]과 같다.



[그림 11] Winrtgen의 Rainbow 테이블 설정

테이블을 생성하는 시간은 CPU와 Rainbow 설정과 관계된다.

테이블 생성은 대량의 디스크 공간을 차지한다.

유리한 점은 한번 생성하면 여러 번 사용할 수 있는 것이다.

Rainbow 방법을 사용하여 크랙을 진행할 때 대량의 메모리 공간을 점유한다.

그러나 속도는 아주 빠르고 효율도 아주 높다.

3. 스위치/허브의 기타 Oracle DB 크랙

THC 그룹에서 이름이 Orakel인 툴을 발표하였다.

해당 툴은 Oracle DB의 취약한 원격 인증 시스템 구조를 크랙하는 것을 분석한다.

테스트에 의하면 해당 툴은 Oracle8i의 원격 로그인 인증에만 효과가 있다.

프로그램이 가지고 있는 테스트가 일종 공격 방법을 제공하였다.

만약 동일한 허브(HUB)의 포트에 Oracle8i DB가 있으면 허브(HUB)는 동일한 충돌 도메인과 브로드캐스트 도메인에 있다는

것을 알 수 있다.
직접 Ethereal 유형의 패킷 캡쳐 툴을 사용하여 기타 포트의 사용자 연결 Oracle8i DB의 인증 정보를 캡쳐할 수 있다.

본 테스트 할 때 선택한 툴은 Ethereal 요즘은 wireshark 변경되었죠.

해당 툴의 아주 좋은 기능 “Follow TCP Stream”이 있기 때문이다.

이 기능을 이용하여 인증 패킷 중의AUTH_SESSKEY,AUTH_PASSWORD를 더욱 빨리 찾아 사용자 이름의 값을 연결한 다음 관련되는

값을 OrakelSniffert 도구에 입력하면 크랙 할 수 있다.

OrakelSniffert 툴은 사전식 대입과 무차별대입을 지원하며 크랙 속도는 아주 빠르다.


[그림 12] Ethereal을 통하여 패킷 캡쳐


[그림 13] OrakelSniffert 툴을 이용하여 크랙

만약 SWITCH 환경에서 각각의 포트에 모두 하나의 충돌 도메인이 있다면 직접 기타 포트 정보를 획득할 수 없다.

그러나 ARP 스푸핑 기술 혹은 교환기의 포트 분석 기능(SPAN)에 대한 배치를 이용하여 기타 포트의 데이터 패킷 트랙픽이 로컬을 경과하게 한다.

실제적인 응용에서는 일반적으로 ARP 스푸핑 기술을 사용한 다음 Ethereal를 사용하여 인증 과정을 캡쳐한다.

크랙하는 방법은 같다.

기초 지식 (1)에서 보면 디폴트 상황에서 표준적인 Oracle 패스워드 설정은 복잡하지 않다.

그러나

“”부호를 사용하여 Oracle의 패스워드 설정 제한을 돌파할 수 있다. “”부호를 사용하는 것을 통하여 아래와 같은 캐릭터를 추가할 수 있다.


Oracle에 사용자를 추가하고 DBA 권한을 부여하는 명령:

SQL> create user minnie identified by "%^@$*()_+~`=-[}[{\:'";
SQL> grant dba to minnie;


위에서 본 오라클 데이타베이스 취약점의 대응방안으로는

추측이 어려운 비밀번호를 설정하는 것 을 통하여 패스워드 크랙에 대한 대응을 할 수 있다.

댓글

이 블로그의 인기 게시물

SSH 크랙 , 보안 :: 메두사(Medusa) [소개, 사용법 ] [패스워드 크래킹]

외부에서 서버를 관리하기 위해서는 Telnet 과 같은 원격 쉘을 이용하게 됩니다. 이런 원격 쉘은 시스템에 직접 접근할수 있기 떄문에 특별한 관리와 보안이 필요합니다. 그래서 나온것이 SSH 바로 보안 쉘 입니다. 기본적으로 이동하는 패킷이 암호화 처리 되기 떄문에 TELNET보다는 매우 안전하다고 볼수 있습니다. 오늘은 이 SSH를 크랙하는 방법과 대책에 대해서 약간 알아보겠습니다. 이번에 소개할 툴은 메두사 입니다. 메두사는 Broute Force  공격에 사용되는 툴입니다. 설치 데비안계열 ( 데비안 , Ubuntu , 쿠분투 주분투 등등) 에서는 apt-get install medusa 로 간단하게 설치 할 수 있습니다. 메두사로 SSH서버를 크랙하는 방법에 대해 알아보겠습니다. 메두사의 메뉴얼입니다. 구조는 간단합니다. 상대 SSH서버를 확인한 후에 메두사로 무차별 대입공격을 시도합니다. 물론 상대 시스템에는 로그가 남을수 있겠지요.  일단 실험에 쓰일 노트북(공격자) 데스크탑(피해자) 입니다. 공격자 OS : Debian Net : wlan0 IP   : 192.168.0.26 피해자 OS : BackTrack4 Net : eth0 IP   : 192.168.0.3 ssh :  OpenSSh ( SSH1) 실험에 쓰일 피해자(backTrack)입니다.  현재 SSH서버를 가동하고 아무작업없이 대기중입니다. 공격자는 포트스캐너와 각종 툴들을 이용해 정보를 수집후  피해자가 SSH서버를 이용한다는것과 OpenSSH(SSH1)을 사용한다는 것을 알아냇다는 전제하에  시작하겠습니다. 공격자는 메두사 툴을 이용해 BruteForce공격을 시작합니다. medusa -h 192.168.0.3 -u root -P /home/noon/NOON/pass.txt -M ssh 사용된 옵션을 살펴 보자면 -h   :   호스트 주소입니다.  고로    타켓 주소 -u   :   크랙할 유저의 이름입니다.     유저 목록을 파일로 만들어서 사용할

OllyDbg 64bit 실행방법

OllyDbg 1.1 은 기본적으로 64bit 환경을 지원하지 못합니다. 책의 디버깅 실습은 거의 대부분 OllyDbg 를 이용해서 진행됩니다.  그러나 OllyDbg 1.1 은 64bit 환경을 지원하지 못합니다.  <그림 1. Windows 7 64bit 에서 OllyDbg 1.1 실행시 예외 발생> 64bit OS 에서 "2장 Hello World 리버싱" 실습 예제 파일 HelloWorld.exe 를 OllyDbg 1.1 로 실행시키면 <그림 1>과 같이 예외가 발생하면서 ntdll.dll 모듈 영역의 코드에서 멈춰버립니다. (이것은 OllyDbg 1.1 의 버그입니다.) 64bit 환경에서 OllyDbg 사용할 수 있는 2 가지 방법 #1. 64bit OS + OllyDbg 2.0 OllyDbg 2.0 버전에서는 64bit에서 정상 실행 되지 않는 버그가 수정되었습니다. 다운로드 링크 :  http://www.ollydbg.de/odbg200.zip * 참고 최신 버전 OllyDbg 2.01 beta 2 는 실행 과정에 약간의 문제가 있습니다. 문제가 해결될 때까지는 OllyDbg 2.0 을 사용해 주시기 바랍니다. 위 링크에서 파일을 다운받아 압축을 해제한 후 실행하면 <그림 2> 와 같은 화면이 나타납니다. <그림 2 - Windows 7 64bit 에서 OllyDbg 2.0 으로 HelloWorld.exe 를 띄운 화면> <그림 2>의 화면을 책의  <그림 2.3>  처럼 보이게 하려면 다음과 같이 작업해 주시면 됩니다. 1) 내부의 CPU 윈도우를 최대화 시킵니다. 2) Code/Register/Dump/Stack Window 의 폰트를 변경합니다.    (각각의 창에서 마우스 우측 메뉴 - Appearance - Font - System f

인터넷 웹페이지 디버깅 피들러(fiddler) 사용법

인터넷 디벌깅 툴 피들러 입니다. 개발자들은 인터넷 디버깅 툴을 많이 사용하고 있는데요 인터넷 익스플러워 , 사파리 구글크롬등 디버깅 툴은 내장되어 있습니다.  하지만 원하는 값을 얻기 어렵거나 사용하기 어려운 점도 있습니다. 그래서 사용하기도 간편하고 필요한 기능도 많도 원하는 값을 쉽게 확인 할수 있는 디버깅 툴을 소개 해드리려 합니다. 알고 계시는 분도 많겠지만 피들러 (fiddler) 라는 툴입니다.  피들러에 대하 알아보도록 하겠습니다.  피들러(Fiddler) 설치 피들러 설치를 하기 위해 아래 사이트에 접속합니다.   http://www.telerik.com/fiddler 사이트에 접속하시면 FreeDownload 버튼이 보입니다. 클릭을 해서 피들러 설치를 진행합니다. ▶ 피들러는 닷넷 프레임워크를 사용하는데요 window 7 이상 제품군이시면  Fiddler for NET4을 선택하시고 미만이면 .net2를 선택 하세요  이제 Download Fiddler를 선택합니다.  ▶ 피들러 설치 진행화면이 나옵니다. I Agree를 클릭합니다.    ▶ 설치할 폴더를 선택 후 Install을 클릭합니다.    ▶ 설치가 완료되면 Close 를 클릭합니다.    ▶ 설치가 완료되면 브라우저를 새로 실행 하시고 도구> Fiddler를 선택합니다. 도구메뉴가 안보이시면 Alt를 누르시면 보입니다.    ▶ 우측에도 피들러 메뉴가 있습니다.  도구를 클릭 후 피들러를 클릭합니다.   ▶ 실행이 되면 아래와 같은 화면이 나오는데요  좌측 하든을 보시면 Capturing 가 보입니다. 캡쳐를 진행하는 중이구요 키보드중 F12키를 누르면 캡쳐 중지 다시 F12키를 누르면 캡쳐가 진행됩니다.  원하는 부