보안/케이쉴드

심화과정 3일차 (침투 그 이후 DB탈취 실습, 보안 방법)

RavenKim 2022. 8. 4. 17:56
반응형

https://www.exploit-db.com/

 

Offensive Security’s Exploit Database Archive

 

www.exploit-db.com

에서 취약한 플러그인 웹파일 다운로드

 

플러그인에서 zip파일 통째로 등록

 

 

 

b374k 중국에서 만들어진 웹쉘, 

웹쉘사용할때 주의할것! > 해킹 프로그램이 있을수 있음

 

https://github.com/implayer/webshell/blob/master/php/b374k/b374k-3.2.3.php

 

GitHub - implayer/webshell: https://github.com/tennc/webshell

https://github.com/tennc/webshell. Contribute to implayer/webshell development by creating an account on GitHub.

github.com

웹쉘 사용

 

 

 

 

기본적으로 웹쉘은 암호화 되어있음 > 소스코드 분석을 통해 비밀번호 알아내기!

 

 

웹쉘을 통해 들어오면 다음과 같은 것들을 알아본다

다음 사이트를 바탕으로

https://attack.mitre.org/matrices/enterprise/

 

Matrix - Enterprise | MITRE ATT&CK®

Enterprise Matrix Below are the tactics and techniques representing the MITRE ATT&CK® Matrix for Enterprise. The Matrix contains information for the following platforms: Windows, macOS, Linux, PRE, Azure AD, Office 365, Google Workspace, SaaS, IaaS, Netwo

attack.mitre.org

 

리버스쉘 실행후 (ip와 포트번호 생성)

 

리버스쉘은 클라이언트가 서버를 열고, 서버에서 클라이언트쪽으로 접속하는 형태 이다. 막지만 내부에서 외부로 나가는 것은 막지 않기 때문이다. 서버에 침투해서 해당 클라이언트로 접속하면 된다

 

정리 

 

1. dns정보조사

2. web응용프로그램 정보 조사

3. wordpress 플러그인 정보조사

4. sql injection 공격테스트

5. 관리자 비밀번호 hash 알고리즘 확인

6. 패스워드 크랙을 위한 사전 파일제작

7. hashcat 도구를 사용하여 패스워드 크랙

8. 웹 서버에 1차 침투를 위해 취약한 파일 업로드 플러그인 설치 및 웹 쉘 실행

>server software component: web shell

>https://attack.mitre.org/techniques/T1059/003/

 

Command and Scripting Interpreter: Windows Command Shell, Sub-technique T1059.003 - Enterprise | MITRE ATT&CK®

 

attack.mitre.org

 

 

이후 다양한 정보 수집

 

cat /etc/passwd 로 머머있는지 확인

 

내부pc에서 계속 이동하면서 공격하기 

서버, pc (권한이 높은) .....  

 

리버스쉘 - 보안장비에서 자기네 스템에 들어오는 패킷을봄

>지속성 확보

 

 

관리자 권한을 회득해 보자! , DB를 탈취해보자~

>sudo, root권한 획득하기

 

더티카우 취약점 (카피 앤 라이트)

레이스 컨디션으로 메모리를 읽고 쓸수 있는 권한 획득

 

https://dirtycow.ninja/

 

Dirty COW (CVE-2016-5195)

What's with the stupid (logo|website|twitter|github account)? It would have been fantastic to eschew this ridiculousness, because we all make fun of branded vulnerabilities too, but this was not the right time to make that stand. So we created a website, a

dirtycow.ninja

https://satanel001.tistory.com/181

 

Dirty Cow (CVE-2016-5195) 분석 - 1

Dirty Cow(CVE-2016-5195) 취약점은 커널의 메모리 서브시스템에서 발생하는 취약점이다. Race Condition을 이용해 Copy-on-Write 과정에서 오류를 일으켜 읽기 권한 파일에 대한 쓰기 행위를 일으킬 수 있다.

satanel001.tistory.com

 

 

 

 

GNU 컴파일러 모음(GNU Compiler Collection, 줄여서 GCC)는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다

 

 

GNU그누 운영 체제의 하나이자 컴퓨터 소프트웨어의 모음집이다. GNU는 온전히 자유 소프트웨어로 이루어져 있으며,그 중 대부분이 GNU 프로젝트 GPL로 라이선스된다.

 

 

리눅스에서 코딩시 결국 gcc같은 compiler가 있어야 한다.

아무튼 gcc는 어떤 linux 배포판을 설치하더라도 설치가 되어 있다.

(그렇게 믿는다... 거의 대부분 그러니까,,, )  

 

 

cowroot 

> 백도어 만들기

 

 

웹쉘로 카우루트로 관리자 권한 획득

백도어용 텔넷 설치

백도어 텔넷으로 root 권한으로 웹서버 접근

백도어 계정 추가 (root권한)

 

데이터베이스 탈취

덤프를 위해 잠시 권환 비활성화

 

wget으로 데이터 탈취

복구 및 분석

 

 

로그 삭제하기

mysql, apache, history, auth, apt history

T1017 방어 회피

 

추가적 악성 코드 유포를 위한 기능 작성

ex drive by compromise

Drive-by Compromise는 악의적인 사용자가 일반적인 브라우징 과정을 통해 웹 사이트를 방문하는 사용자를 통해 시스템에 액세스하는 방법이다.

익스플로잇 코드를 브라우저에  전달하는 여러 가지 방법이 있다.
- 공격자가 정상 웹사이트에 크로스 사이트 스크립팅, javascript와 iFrames 같은 악성 코드를 삽입한다.
- 악성 광고를 정상 광고 제공자에게 유료로 지불하고 배포한다.
- 나머지 부분은 참고 사이트를 참고하세요.
    - 어정쩡한 번역과 이해는 혼란을 유발할 수 있습니다.

일반적인 Driver-by compromise 과정은 :
1. 사용자는 악의적인 제어 콘텐츠를 호스팅하는 데 사용되는 웹 사이트를 방문합니다.
2. 스크립트는 자동으로 실행되며 일반적으로 취약한 버전의 브라우저 및 플러그인 버전을 검색합니다.
3. 취약한 버전을 찾으면 익스플로잇 코드가 브라우저로 전달됩니다.
4. 악용에 성공하면 다른 보호 기능이 없는 한 사용자 시스템에서 악의적인 코드가 실행된다.

기술의 초점은 웹 사이트 방문 시 클라이언트 엔드 포인트에서 소프트웨어를 이용하는 것입니다.

완화방법에는
- 브라우저 샌드박스를 사용한다.
    - 그러나 브라우저 샌드박스 우회방법은 존재할 수 있다.
- 익스플로잇 보호
    - 
- 웹 기반 콘텐츠 제한
- 소프트웨어 업데이트
    - 보안 관련된 당연한 소리인데, Drive-by Compromise는 주로 취약한 버전 브라우저가 목표라고 한다.

탐지
- 방화벽 또는 프록시를 통해 URL을 검사를 하거나 평판 기반 분석을 수행한다.
- 네트워크 IDS를 사용하여 알려진 악성 스크립트, 일반적인 스크립트 난독화 및 악용 코드를 찾을 수 있습니다.
- 브라우저 프로세스의 비정상적인 동작을 탐지...?
    - 디스크에 의심스러운 파일 쓰기, 실행, 발견의 증거를 숨기려는 프로세스 주입의 증거또는 비정상 네트워크 트래픽이 포함될 수 있다.

 

https://ackcent.com/initial-access-drive-by-compromise-t1189/

 

Initial Access - Drive-by Compromise (T1189) - Ackcent

This post is the first of a series of posts that will provide a better understanding about the techniques used by adversaries to reach their tactical objectives.

ackcent.com

 

 

 

 

데이터배이스 덤프시 크기가 커서 잘개 쪼개서 일정한 시간 간격으로 뺴가면 들킬일도 적다. 

통으로 뺴내면 들킬수 있음

 

 

 

탐지및 완화방법 

 

footprinting> 

배너 수정

불필요한 서비스 중지

패킷 필터링

ids ips의 탐지 패턴 주기적 갱신

icmp메세지 차단

 

enumeration >

netBIOS 사용 안하면 제거

SNMP Cmmunity String 변경

 

sqli 시큐어코딩

>파라미터 변경, 쿼리 선처리시 사용 못함

asp에서 prepared statement 구문 이용

해당 구문을 sql쿼리로 선처리하고 컴파일하여 문자열을 변수처리함

문자열 제한 > 우회하는 방법이 있어서 자제중 > aabb 에서 가운데 ab 날리면 ab가 남음

바인딩된 질문 사용

대문자를 전부 소문자로 바꾸어서 비교

특수문자 필터링

운영적 측면 >

db권한 최소로 부여

xp_cmdshell등 확장 프로시저 삭제

에러페이지 노출 방지 > 리다이렉션 차이도 있어서 추가적 보안요소

에러별 메세지 지정> 리다이렉션

 

 

xss

입력값 검증

악의적 스크립트가 있는지 입력 위치에서 검증, 길이 제한된 문자

출력값 검증

서버사이드 검증을 한다

태그안에 자바스크립트 추가 방지 > 리플렉티드도 포함

 

 

xss > 보안라이브러리를 사용

패턴기반으로 막아줌 

필터링 + 라이브러리 (owasp에서 다양한 언어를 제공해줌 > 범용적 사용)

 

파일 업로드

특수문자 필터링

종단문자 필터링

웹쉘을 올리는 디렉토리 실행권한 제어 > 접속은 가능하나 웹쉘이 동작하지 않음

확장자 필터 > 

허용 - 업로드 가능한것만 언급 - 많이 사용

부정 - 업로드 하면 안되는거 언급 (우회되거나 예외가 있다)

오픈 소스의 파일이 업로드 되는 구간 확인(테스트페이지 같은거 있는지 확인)

경로표시 문자열 제한 

 

 

 

보안 요구사앙 및 설계

근본적으로 어떻게 막을지에 관해 

 

입력값에 대한 공격 확인

입력값을 검증하고 처리한다 

> 많은 공격들을 예방할 수 있다

 

전제조건 > 클라이언트가 아닌 서버측에서 막아주어야 한다

클라이언트측 > burp 등으로 우회가능

 

세션 > 서버측에서 관리

인원만큼 부하가 생긴다  안전하지만 부하관리가 필수

상황에 맞게끔

 

인코딩으로 우회 기법 > 표준문자로 변화하여 막아주기

 

파일 업로드 종단문자 조심하기

 

 

 

파일처리

보안 제품 어플리케이션 > 경로관련 이슈

파일을 찯아서 어플리케이션을 실행시키는 서비스에서 상대경로에 내가 원하는 파일을 배치하는 등의 방

절대경로를 많이 사용하자! > 상대경로 = 파일 다운로드 취약점

exe, web언어를 제한하자! > 이메일 에서 업로드가 안되는

업로드된 파일을 격리 

파일처리 > 전용 어플리케이션을 통해 검증되도록 한다. 

 

업로드 기능 > 인가된 사람 확인 > 사용자측 언어 있는지 확인 > 검사시 걸리는게 있으면 디나이 아니면 패스 >파일을 임시복사 > 허용된건지 확인> 정상적인 위치에 복사

 

인자값, 파일 확장자, 존재여부등을 확인

 

 

최상위 계정을 사용하지 말자 

 

 

dbms관리자 권한으로 처리 > 구글에서 검색이 안되도록

인증과 권한을 부여하자!

 

 

웹서비스

자산별로 엑셀로 만들고 사용자가 접근가능한리스트, 관리자 접근 가능 리스트, 등등 여러가지 웹페이지에 대해 각 목록화를 하고 들어갈수 있는지 없는지 여부를 주기적으로 확인

 

 

 

세션 아이디를 확인하자!

세션은 get이나 post로 할수 있지만 post로 노출되지 않게끔 하자!

 

 

다중인증 실시 > 다중으로 여러사람들이 신청하는걸 막기위해 하나의 ip만 허용한다는지 등의 정책

만약 한번도 접속하지 않은 기기이면 이메일로 알려주는 형식으로 보안을 유지중

 

 

 

암호화구간 

ssl통신을 하지만 어느위치에서 어떻게 가로챌지 모르기 때문에 

atm이나 포스기를 통해서 개인 금융정보가 탈취될수도 있다. 포스기>디바이스로 전송되는 순간 평문일시 데이터 탈취

솔루션을 활용 DLP를 요즘 가장 많이 사용함

 

 

ttps기반 대응방안도 한번 더 읽어보기!