작은 메모장

39. 취약점 진단 실습 2 본문

실더스 루키즈 교육

39. 취약점 진단 실습 2

으앙내눈 2024. 2. 27. 17:11

beebox의 IP를 확인한 후, 칼리 리눅스에서 nmap을 돌린다.

타겟인 22번 포트, SSH가 열려있는 것을 확인할 수 있다.

 

그 후, 접속을 시도한다.

 

그러면 해당 경로에서 로그인을 시도한 흔적을 확인할 수 있다.

 

웹 로그 또한 이 로그 디렉토리 경로 아래에 쌓인다.

칼리 리눅스에서 nikto로 공격을 날려본다.

 

그럼 이렇게 공격 기록이 남은 것을 확인할 수 있다.

 

좀 더 가독성을 보기 좋게 하기 위해, 띄어쓰기를 기준으로 원하는 정보만 뽑아본다.

 

또, 404 응답코드만 분류하여 보기도 해보자.

 

이 둘을 합치면 상당히 유용한 검색 결과가 나온다.

 

또 아래와 같이 다양한 명령어로 변형할 수 있다.

 

해당 파일은 샘플 로그를 제공받아 실험하였다.


제공받은 윈도우 7을 실행한다.

 

제공받은 파일도 두개

 

파일 서버를 프로그램으로 실행한다.

 

칼리 리눅스에서 여길 접근하면, 파일 서버에 접근 가능하다.

 

해당 버전의 HFS는 취약점을 하나 가지고 있다.

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

 

Rejetto HTTP File Server (HFS) 2.3.x - Remote Command Execution (1)

Rejetto HTTP File Server (HFS) 2.3.x - Remote Command Execution (1) EDB-ID: 34668 CVE: 2014-6287 Date: 2014-09-15

www.exploit-db.com

이 취약점은 원격 명령 실행에 관해 취약점이 있으며,

특정 파일의 잘못된 인수 명령으로 인해 취약점이 발생한 것이다.

더 자세하게는 null 문자 이후의 명령어 처리를 하지 않기 때문에 발생한다.

 

이걸 실행해보자.

소개된 쿼리를 입력한다.

 

칼리 리눅스 상에서는 아무런 변화가 나타나지 않는다.

하지만 윈도우즈에는 cmd가 실행된 것을 확인할 수 있다.

 

이는 CMD 뿐 아니라 다른 프로그램 또한 실행이 된다.

 

이 취약점을 metaspolit에서 사용해보자.

 

공격 패턴 탐지를 위한 Wireshark 또한 켜준다.

 

공격을 실행하면, 패킷이 잡힌다.

 

이 패킷을 조사해보자.

해당 패킷의 상단은 GET 요청한 url 정보가 나와있다.

이를 URL 디코드 시키면 정확한 쉘 코드를 볼 수 있다.

 

파일 탐색을 위해, SysinternalsSuite을 실행한다.

먼저 Process Explorer를 실행한다.

 

윈도우에는 기본적인 OS 동작을 위한 시스템이 동작하고 있는데, 이를 subsystem이라고 한다.

통상적으로 system, csrss, wininit, winlogon, explorer 등이 있다.

 

explorer 하위로 여러 파일들이 잡혀 있는 것을 확인할 수 있다.

해당 파일이 스크립트 형태로 여러 프로그램을 계속 로드하는 것을 확인할 수 있다.

 

칼리 리눅스에서 shell을 꺼내보자.

그러면 cmd가 두개로 늘어난 것을 확인할 수 있다.

shell을 꺼보면 다시 한개로 줄어든다.

이 파일이 바로 악성 코드인 것.

 

해당 파일의 경로를 확인하면, C드라이브 사용자 파일 경로에 은밀하게 숨겨둔 것을 확인할 수 있다.

이 파일을 획득하여 코드분석으로 넘어가게 된다.


이벤트 뷰어를 살펴보자.

 

Windows Logs > Security로 들어가면, 로그인 및 권한 변경 정보가 나온다.

하지만 정확한 정보는 나오지 않는다.

 

Applications and Services > Microsoft > Windows로 들어가면, 각 프로그램 별 권한 정책을 변경할 수 있다.

여기서 권한 조정을 하고 결과를 볼 것이다.

 

일단 칼리 리눅스에서 제어가 잘 되는것을 확인한다.

 

그 후, 쉘로 접근하여 명령어를 테스트해본다.

 

권한 설정을 시도하면, 권한 부족으로 인해 시도가 되지 않는다.

다른 방법이 필요한 것이다.

 

현재 세션을 백그라운드로 돌려놓고 다른 세션을 시도한다.

 

Bypassuac를 검색하여 적용시킨다.

 

아까 백그라운드로 돌려놓은 세션을 선택하고, 익스플로잇한다.

 

새로 적용시킨 익스플로잇으로 권한 상승이 가능해졌다.

권한을 올려보자.

 

권한도 획득했으니, 이제 사용자 추가가 될 것이다.

 

사용자를 관리자 그룹에 추가도 해주자.

 

rdesktop을 이용하여 접속을 시도한다.

아이디와 비번은 아까 설정한 hacker/hacker.

접속이 되는 것을 확인할 수 있다.


이벤트 뷰어를 다시 보자.

로그 오프 메시지가 있는것을 확인할 수 있다.

 

또, 스페셜 로그온 정보를 보고 로그인 정보를 볼 수 있다.

했던 기록들이 전부 남는 것.

 

또, TerminalServices-LocalSessionManager를 살펴보면, 터미널 기록을 전부 확인할 수 있다.

이를 확인하여 해커가 어딜 통해 언제 침입하였는지 확인할 수 있다.

 

Procmon을 이용하여 더욱 자세한 분석을 시도해보자.

 

CMD를 관리자권한으로 실행한다.

그 후, Procmon 폴더 위치로 이동한다.

 

Sysmon은 발생하는 프로세스 이벤트를 전부 잡아 로그화시키는 프로그램이다.

이 프로그램으로 세세한 프로세스 감시를 진행한다.

명령어로  sysmon을 설치한다.

 

설치하면 Sysmon이 서비스에 등록된 것을 확인할 수 있다.

껐다 켜도 계속 정책이 유지가 되는 것.

 

문제는 이 Sysmon이 정말 많은 로그를 발생시킨다.

너무 많은 로그 때문에 저장공간이 부족할 우려가 있을 정도.

이에 일반적으로 많이 사용하여 불필요한 로그는 없앨 필요가 있다.

그 정보는 여기(https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml)를 확인하면 된다.

 

'실더스 루키즈 교육' 카테고리의 다른 글

41. 소스코드 취약점 진단  (0) 2024.03.06
40. 취약점 진단 실습 3  (0) 2024.02.28
38. 취약점 진단 실습 1  (0) 2024.02.26
37. 도커 파일과 도커 컴포즈  (0) 2024.02.23
36. 도커 실습  (0) 2024.02.22