wonder

정보보안 스터디 - 21주차 4일 - LNK 페이로드 제작, 레드팀 서비스 설명 본문

Red Team/레드팀 개념

정보보안 스터디 - 21주차 4일 - LNK 페이로드 제작, 레드팀 서비스 설명

wonder12 2023. 3. 6. 02:21

☞ 개념 정리

hostname = 컴퓨터이름 : 명령어 hostname
username 은 유저이름 명령어: whoami 

 

 

 

LNK 페이로드 제작

제작할 lnk 바로가기 파일은 윈도우 디펜더는 우회가 가능하지만 EDR 구축 환경에서는 잡을 수 있습니다.

lnk는 파워쉘 4000글자 정도를 넣을 수 있게 제한되었기 때문에 더 긴 파워쉘을 넣기 위해서는 PS Loader를 가져옵니다. C2 프레임워크에는 여러가지가 있지만 

대표적으로 MSF, Cobalt Strike, Havoc 등이 있습니다.

c2matrix에서는 C2 서버를 잘 정리해둔 spread sheet가 제공됩니다.

 

이번 제작환경에서는 Havoc C2 프레임워크를 사용하여 데몬을 제작합니다. havoc은 무료버전 오픈소스입니다.

exe, dll, shellcode 등의 페이로드를 생성하고 타겟시스템에서 실행시키면 명령어 사용까지 하게 해줍니다.

 

전체적인 단계를 설명하자면

 

1) 생성된 exe PE파일을 shellcode로 변환합니다. (donut 툴 사용)

 

2) 변환된 코드를 PSloader에 넣습니다.

 

3) 동시에 ANSI 우회 코드를 같이 PSloader에 넣은 뒤 원라인으로 코드를 짭니다.

여기서 ANSI란 원래는 Dev(개발자)가 백신 등 나쁜 코드를 감지하기 위해 만들어졌습니다.

즉 닷넷(.NET) 악성코드를 실시간으로 감지하고 제거해버립니다.

적용되는 프로그램 언어로는 C#, PS, F#, VBscript 등이 있습니다.

이런 언어로 만들어진 코드들이 악성적이라면 제거합니다.

그래서 ANSI 우회를 진행해야합니다.

 

4) lnk파일을 실행하면 해당 파워쉘이 로드되고 메모리상에서 실행됩니다.

즉 파일리스 멀웨어입니다. 실행 되는 것 자체나 PSloader 등 모두 메모리상에서 이루어지기 때문에 타겟시스템 디스크 위에 씌어진 건 lnk밖에 없습니다.

참고로 파워쉘도 오래된 방법이라 안쓰인지 5년이나 됐다고 합니다.

 

 

실습으로 진행하기 전 간단하게 보자면

1) 

waitforsingleobject로 데몬 exe를 만듭니다.

 

2) 

donut을 이용하여 shellcode로 변환합니다. 

포맷 출력 -f powershell로 출력하여 

loader.ps1으로 만들어진 것을 볼 수 있습니다.

subl loader.ps1

확인해보면 앞부분은 파워쉘 / 뒷부분은 쉘코드 형식입니다.

 

여기서 쉘코드란 

메모리에 올리면 바로 실행할 수 있는 기계어로 이루어진 조각입니다. 보통 어셈블리어로 작성해서 기계어로 바꿔 실행합니다. 이 쉘코드를 실행시켜 컴퓨터를 제어하기 때문에 쉘코드라고 불립니다. 

ex)
\x48\x31\xc0\x50\xb0\x3b\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x48\x89\xe7\x48

 

 

powershellloader

파워쉘 코드인데 C#으로 작성되어 있고 사용가능합니다.

dll파일을 실시간으로 파워쉘에서 사용할 수 있습니다.  

 

 

$ PInvoke 는  C, C++을 굳이 사용하지 않아도 
C#으로 작성해도 win32.dll 같은 winAPI를 파워쉘 내에서 사용하도록 가능합니다.

class {
virtualalloc - 메모리할당
createthread 쓰레드 생성,시작
waitforsingleobject 그렇게 중요한건아니고

update밑에 shellcode를 붙여놓습니다.
}

 

어짜피 파워쉘인 것을 인지하고 실행해버리므로 ps1이지만 md로 저장해 둡니다.  

 

 

3) 

ANSI 우회를 하기위해서

bypass.ps1이라는 우회코드가 있는데 이걸 powerchunker.py를 사용하여 10개로 쪼갭니다. 파워쉘에 집어넣으면 확인을 못합니다.  

ps1포맷이 10개 생기지만 모두 붙여줘야합니다. -o ouch.txt 는 10개를 가져와서 붙이는 역할을 하는 코드입니다.

 

4) 

웹서버를 만들고

공격자 ip주소는 넣을 것은 모두 넣고 원라이너로 두 코드(ANSI우회, loader)를 붙인 후 base64인코딩하여 lnk파일을 생성합니다.

배포할 때는 zip파일로 만들어서 나머지 파일들은 눈속임으로 두고 최종적으로 lnk파일을 실행되게 해야합니다. 피싱 이메일로 첨부를 하거나 HTML smuggling(공격자 서버의 URL링크로 바로 다운로드 받게끔)을 하거나 google drive 첨부파일 등으로 배포하는 방식이 있습니다.

 

lnk를 실행 했을 때 직접적인 디펜더 테스트 폴더 스캔은 물론 실행했을 때도 잡지 못합니다.

havoc 콜백이 와있고 C2 명령어가 가능합니다.

 

 

 

 

 

 레드팀 서비스에 대한 설명

 

 

레드팀 인프라

공격자들은 악성URL을 평범한URL로 우회하기 위해서 서버를 직접적으로 전송하는 것이 아니라 CDN 및 도메인 프론팅을 거칩니다. 또한 중간에 AWS, Azure, 구글 cloud 플랫폼 같은 리다이렉터를 두고 명령어를 주고 받습니다.

 

CDN(Content Delivery Network)서버는 서버를 여러 곳에 두고 제일 근접한 서버에서 이미지, 비디오 등 파일을 받는 방식입니다. 현재 대부분이 사용하는 방식입니다. 미국 서버 하나를 두는 것에 비해 부하를 분산시켜준다는 장점이 있고, 빠른 네트워크 전달 속도로 빠른 서비스 제공 가능합니다.

 

도메인 프론팅은 C2 통신을 숨기기 위해서 사용하는 기법입니다. 정상적인 통신을 하는 것처럼 위장하는 거죠. 네트워크 보안에 탐지되지 않습니다.

정상 통신으로 위장하기 위해 CDN서버가 사용됩니다. 그러니까 CDN에 요청하는 척하면서 악성콘텐츠가 있는 악성 서버와 통신하도록 할 수 있습니다. CDN 서버는 중간자로써 돕게 되는 겁니다. 

1) 겉으로 통신 URL만 보고 차단하는 웹필터링 서비스를 우회합니다.

2) DPI(Deep Packet Inspection)를 우회하기 위해서 내용을 보지 못하게 하는 암호화 통신을 사용합니다.

 

 

 APT는 

잠복해서 주고받는 정보들을 확인하면서 관리자가 중요 시스템에 접근할 때까지 몇 주~ 몇 달까지 기다립니다.

궁극적으로 Access Ascalation(권한 상승) 및 관리자 Access 권한 획득을 하는 lateral movement(측면이동, 횡적이동)을 위해서입니다. 

 

과정은 초기 Access 권한을 얻은 뒤

내부망 네트워크로 더 깊이 이동하기 위해 사용합니다.

취약점이 있거나 손상된 환경으로 향상된 권한을 획득합니다.

 

탐지를 피하고 합법적인 사용자로 가정하고 네트워크망의 여러 시스템으로 이동합니다.

그 과정에서 정보수집, 자격증명 획득, 권한 상승, 페이로드에 대한 access 권한 획득이 필요합니다. 

 

정보수집의 예를 들면,

Netstat, ifconfig, arp테이블, 라우팅 테이블을 확인하거나 파워쉘을 이용하면 관리자 access 권한을 가진 네트워크 시스템을 빠르게 식별할 수 있습니다.

 

자격증명은 네트워크 access 비밀번호를 찾는 것으로 dumping을 노려야합니다.

예를 들어

피싱공격
타이포스쿼팅(URL 속임)이 적용된 피싱공격을 하여(사회적 공학 기법이 들어갑니다.) 자격증명 크리덴셜을 노림
pass the hash 
암호에 access 하지 않고 인증하는 방법
pass the ticket
kerberos 티켓으로 인증하는 방법
mimikatz
손상된 시스템의 메모리에서 캐시된 일반 텍스트 암호나 인증서를 훔치는 데 사용
keylogging
키보드의 암호를 캡쳐

 

 

 대응 방안

APT의 잠복기간이 길어지면 길어질수록, 또는 더 깊이 접근할수록 정상 네트워크 트래픽으로 인지할 수 있기 때문에 더욱 탐지는 어려워지고 공격자 입장에서는 정보수집하기가 수월해집니다.

따라서 최대한 체류시간을 줄이고 빨리 침입자를 찾아내서 제거해야합니다. 

 

그렇기 위한 대응 방안으로는 초반접근 차단과 내부망에서의 차단으로 나눌 수 있겠습니다.

 

EDR(엔드 포인트) 보안 솔루션 업데이트

표준 보안을 사용하는 취약한 환경이라면 이를 회피하기 위해서 측면으로 이동할 수 있습니다. 따라서 표준 보안이 아닌 차세대 행동 분석 기능이 있는 솔루션(crowdstrike같은 EDR)으로 사용해야합니다.

 

APT 헌팅. 

초기 접근 후 네트워크망에 오래 잠복하지 못하도록 비정상적인 활동이 감지되면 경고를 보내도록 하는 것이 중요합니다.

 

 

 침투테스트 과정

초기침투 > 내부 정찰 및 횡적이동 > 지속성유지 > 미션 수행 > 최종 결과물

 

지속성 유지는

블루팀이 레드팀을 발견해 격리/추방 조치를 하더라도 다시 거점에 진입할 수 있도록 처리하는 것을 말합니다. 

거점을 여러개 확보를 하는 등입니다.

 

미션 수행의 예를 들면 

더미 데이터 유출, 랜섬웨어 배포, XMRig 마이너 설치, 은행일 경우 백엔드 SWIFT 인프라 접근, 데이터 조작 등이 있습니다.

SWIFT : 은행, 증권사, 보험사 등 금융기관 간에 사용하는 자금 결제, 메세지 연계 서비스망

카테고리에 따라 메세지 타입이 뜨면서 정보를 교환합니다.

장점 - 업무 표준화, key를 이용한 보안성

 

 

 

초기침투 단계에서 만약 블루팀이 너무 잘막아서 인원들이 모두 피싱 이메일을 파악한 경우나, 공격자의 비컨을 파악하고 블랙리스트 차단한 경우가 있습니다. 즉 정상적인 초기 공격들을 진행할 수 없다고 판단되는 경우에는 Asuumed Breach(이미 뚫렸다 치고) 단계로 들어가 내부 대응 절차 및 보안 통제들을 평가합니다. 

8주 기간 내내 초기 정찰 및 침투만 할 수 없으므로 2~3번 정도 실패하게 되면 다음 단계로 들어갑니다.

 

 

최종 결과물 단계에서는 레드팀의 작전 기간이 모두 끝나고 타겟 기관의 CISO는 블루팀에게 연락해 작전의 존재를 알립니다. 각자 디브리핑 시간을 가지며 어떤 공격들을 시행했는지 얼마나 대응 및 탐지했는지 알아보는 퍼플팀 시간을 갖습니다. 레드팀은 공격 탐지와 우회, 대응과 대처, 블루팀이 구축한 대응 절차들이 효과적이였던점과 부족했던 점에 대해서 자세하게 보고합니다. 또한 레드팀 서비스 중에 잘못된 설정(Misconfiguration)이나 취약점들 또한 모두 취합해 보고합니다. 

 

 

 프리미엄 서비스

레드팀 자체가 프리미엄/틈새 서비스 이기 때문에 모든 고객사들이 레드팀 서비스를 받기에는 한계가 있습니다. 다음과 같은 보안적 수준에 도달한 기업들이 레드팀 서비스를 받기를 고려할만 합니다.

 

1. 회사내 지정된 IT팀과 보안팀이 존재한다.
2. 정기적인 웹, 모바일, 외부, 내부 모의해킹 서비스를 받고 있으며, 왠만큼 치명적인 취약점들이 더 이상 존재하지 않는다.
3. 실제로 보안, IT, 개발 팀들이 발견된 취약점들을 능동적으로 고치고 있다.
4. 취약점 스캐너를 정기적으로 사용한다.
5. 회사 및 업계를 노리는 APT 그룹이 존재하거나 실제로 공격을 받았던 적이 있다.
6. 회사의 가장 중요한 자산이 뭔지 특정할 수 있으며, 이를 보호하거나 모니터링 하는 프로세스가 존재한다. 이를 시험하고 싶을 경우.

 

모의해킹 서비스와의 다른점은 모의해킹은 받으라고 어느정도 강제하는 법이나 통제(Compliance)가 있는 경우가 있기 때문에 다소 필수적이고 보안취약점(상)에 해당하는 기본적인 취약점을 점검하는 서비스임에 반해 레드팀 서비스는 더 자세하게 찾는 프리미엄 서비스 입니다.
그래서 레드팀의 경우 경기가 좋은 상황이나 회사 예산에 여유가 있을 때 받고싶어 하기 때문에 경기에 그 영향을 더 많이 받습니다.

 

 

 필요한 지식

 

 

 

다음 포스팅에서는 

havoc C2 프레임워크를 사용해보고 실제로 lnk 페이로드 제작을 진행해보겠습니다.

또한 레드팀 개념 정리를 더 올리겠습니다.

 

 

 

Comments