'전체 글'에 해당되는 글 602건

https://ggonmerr.tistory.com/247

 

AD(Active Directory) 공격

1. AD (Active Directory) - 계정 정보와 컴퓨터에 대한 정보, 회사에서 강제하고자 하는 정책들(비밀번호 정책, 화면 보호기 설정 등)에 대한 정보를 저장하고 있는 일종의 데이터베이스 - 중앙에서 서

ggonmerr.tistory.com

 

1. AD (Active Directory)

- 계정 정보와 컴퓨터에 대한 정보, 회사에서 강제하고자 하는 정책들(비밀번호 정책, 화면 보호기 설정 등)에 대한 정보를 저장하고 있는 일종의 데이터베이스

- 중앙에서 서버, 사용자 등 시스템 전반에 접근이 가능하므로, 공격자들의 주요 공격 목표가 되며, AD 계정과 접근권한 탈취 시 전체 내부망이 장악당할 수 있음

 

2. 공격유형

2.1 DCSync [2][3]

- 일반적으로 AD 환경에는 여러 DC가 포함되며, 각각의 DC는 사용자 자격 증명 업데이트와 같은 변경 사항의 상호 업데이트를 통해 동기화 유지

- 도메인 복제 권한을 보유한 특정 계정의 액세스 권한을 획득한 공격자가 DC를 가장해 정상적인 DC와 동기화를 수행

- Mimikatz의 기능 중 하나

- 정상적인 AD 통신을 악용한 공격으로 탐지 및 조치가 쉽지 않으며, 엄격한 계정 관리가 필요

 

2.2 DCShadow [4][5]

- 공격자가 탈취한 계정을 이용해 AD에 악성 도메인 컨트롤러를 등록하는 공격

- Mimikatz의 기능 중 하나

- 정상적인 AD 통신을 악용한 공격으로 탐지 및 조치가 쉽지 않으며, 엄격한 계정 관리가 필요

 

2.3 Password spray [6][7]

- AD 내 계정을 대상으로 계정당 하나의 암호를 대입하는 공격

- 계정당 암호를 한 번만 대입하기에, 무차별 대입 공격과 차이를 가지며 계정 잠금을 유발하지 않음

- 계정 설정 시 강력한 암호 정책 적용 및 비밀번호 재사용 금지 등의 정책 적용

 

2.4 Pass-the-Hash [8][9]

- Hash 된 비밀번호를 이용하는 방법으로, 공격자는 비밀번호 자체를 몰라도 접속 인증을 통과할 수 있음

- 특정 계정의 비밀번호 Hash를 획득한 후 새로운 세션을 만들어 획득한 Hash를 이용해 접속

- 공격자 시스템의 메모리 영역(ex. LSASS_사용자 인증을 위해 사용하는 프로세스)에 Hash를 미리 로드한 후, 서버에 접속

- 관리자 권한의 사용자 수 제한, 권한 분리, 최소 권한 부여 등의 정책 적용

 

2.5 Pass-the-Ticket  [10]

- 최근 AD 환경은 티켓 기반 인증 프로토콜인 Kerberos 인증을 사용

- 공격자는 Mimikatz 등으로 탈취한 Kerberos Ticket을 사용해 AD인증 시도

- 관리자 및 서비스 계정에 강력한 암호 적용, 유출된 암호 제거 등 적용

 

2.6 Golden ticket [11]

- 공격자가 TGT(Ticket Granting Ticket)를 KDC를 통하지 않고 만들어내는 액티브 디렉토리 지속성 공격

- 도메인 어드민이나 KRBTGT(KDC 서비스 계정) 유저를 장악한 뒤 진행

- AD의 기본 인증 프로토콜인 커버로스 인증은 ‘KRBTGT 암호 해시로 암호화된 모든 TGT는 정상적인 TGT’라는 전제로 구축

- KRBTGT 비밀번호 주기적 변경 등 적용

 

2.7 Service Principal Name (SPN) [12]

- SPN(Service Principal Name)은 Active Directory의 서비스 인스턴스에 대한 특수 식별자

- 커버로스는 기본적으로 어떤 도메인 유저던 간에 SPN 특성이 존재하는 서비스 유저를 상대로 한 Service Ticket을 TGS(Ticket Granting Service)를 통해 요청하고 받음

- 해당 티켓은 서비스 유저의 NTLM 해시로 암호화되어 있음

- KRB_TGS_REPTGS를 받아 서비스 티켓을 추출한 뒤, 이를 메모리상에서 빼내서 오프라인 브루트 포스 공격을 감행해 TGS가 복호화가 된다면 서비스 유저의 비밀번호를 찾아내는 공격

- 불필요한 커버로스 티켓 요청 등 모니터링, 사용자 비밀번호 변경 등 적용

 

2.8 AdminCount [13]

- AdminCount는 Active Directory 속성 중 하나로 <NOT SET>을 기본값으로 가지나 Domain Admins와 같은 보호된 그룹에 사용자가 추가될 경우 값이 1로 업데이트

- 공격자는 해당 값을 모니터링하여 관리 권한이 있는 개체를 식별

- 강력한 암호 사용, AdminCount 1 설정된 계정 모니터링 등 적용

 

2.9 AdminSDHolder [14][15]

- AdminSDHolder 개체에는 고유의 ACL이 있으며, 이 ACL은 보호된 그룹의 권한을 제어하는데 사용

- SDProp(Security Descriptor Propagation) 프로세스를 악용

- SDProp이란 60분마다 실행되어 AdminSDHolder 개체의 ACL을 AdminCount 특성이 "1"로 설정된 모든 사용자 및 그룹에 복사

- 공격자는 취약한 관리자 계정을 탈취해 일반 계정의 AdminCount를 1로 설정한 후 SDProp를 사용해 ACL을 덮어씀

- 강력한 암호 사용, AdminCount 1 설정된 계정 모니터링 등 적용

 

3. 참고

[1] https://www.bleepingcomputer.com/news/security/the-attacks-that-can-target-your-windows-active-directory/
[2] https://www.xn--hy1b43d247a.com/credential-access/dcsync
[3] https://blog.netwrix.com/2021/11/30/what-is-dcsync-an-introduction/
[4] https://www.dcshadow.com/
[5] https://blog.netwrix.com/2022/09/28/dcshadow_attack/
[6] https://m.blog.naver.com/quest_kor/221653929403
[7] https://www.xn--hy1b43d247a.com/credential-access/password-spraying
[8] https://blog.naver.com/aepkoreanet/221443237165
[9] https://www.beyondtrust.com/resources/glossary/pass-the-hash-pth-attack
[10] https://www.netwrix.com/pass_the_ticket.html
[11] https://toad.co.kr/it/?idx=13330621&bmode=view
[12] https://www.xn--hy1b43d247a.com/credential-access/kerberos/kerberoasting
[13] https://blog.netwrix.com/2022/09/30/admincount_attribute/
[14] https://www.netwrix.com/adminsdholder_modification_ad_persistence.html
[15] https://www.itgeared.com/ad-permissions-resetting-review-of/

블로그 이미지

wtdsoul

,

https://github.com/advisories/GHSA-x8gm-j36p-fppf

 

CVE-2024-47528 - GitHub Advisory Database

LibreNMS vulnerable to Stored Cross-site Scripting via File Upload

github.com

 

Description

Summary

Stored Cross-Site Scripting (XSS) can archive via Uploading a new Background for a Custom Map.

Details

Users with "admin" role can set background for a custom map, this allow the upload of SVG file that can contain XSS payload which will trigger onload. This led to Stored Cross-Site Scripting (XSS).

PoC

  1. Login using an Admin role account.
  2. Go over to "$URL/maps/custom", the Manage Custom Maps.
  3. Create a new map then choose to edit it.
  4. Choose the "Set Background" option.
  5. Choose to upload a SVG file that have this content.
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)">
  <circle cx="50" cy="50" r="40" />
</svg>
  1. Once uploaded, there should be a link to the SVG return in the POST request to the API "$URL/maps/custom/1/background".
  2. Go over to that link on browser, should see a pop-up.

Impact

Attacker can use this to perform malicious java script code for malicious intent.
This would impact other Admin role users and the Global Read role users. Normal users does not have permission to read the file, so they are not affected.

References

블로그 이미지

wtdsoul

,

https://m.blog.naver.com/vanstraat/221732533202

 

Powershell 파워쉘 실행정책 - Execution Policy

파워쉘을 사용하다보면 외부에서 가져온 스크립트를 실행할 때 아래와 같은 오류를 경험하곤 합니다. 이 시...

blog.naver.com

파워쉘을 사용하다보면 외부에서 가져온 스크립트를 실행할 때 아래와 같은 오류를 경험하곤 합니다.

이 시스템에서 스크립트를 실행할 수 없으므로 ~~~파일을 로드할 수 없습니다

~~~ canno be loaded because running script is disabled on this system

위의 오류 메시지는 Execution Policy(실행정책)와 관련된 것으로, Execution Policy는 파워쉘이 가진 첫번재 보안 방식 중 하나이며, 파워쉘이 실행할 스크립트 제어와 관련된 설정으로 이해하시면 됩니다. 그런데 Powershell의 Execution Policy와 관련된 상세한 내용이 많지 않아 정리를 한번 해보려고 합니다.

Get-ExecutionPolicy

가장 먼저 컴퓨터의 실행정책이 어떻게 설정되어 있는지 확인해야 한다면, Powershell 콘솔을 열고 아래와 같은 명령으로 현재 컴퓨터의 설정값을 확인할 수 있습니다.

Get-ExecutionPolicy

별다른 설정 변경을 하지 않았다면, Windows 10 PC에서는 Restricted로 보입니다.

Get-ExecutionPolicy에 아무런 argument를 입력하지 않으면 아래처럼 기본값이 보입니다. 기본적으로 LocalMachine의 scope를 대상으로 보여줍니다.

그런데 만약 Get-ExecutionPolicy-List 인수를 추가한다면 전체 scope별로 ExecutionPolicy를 확인할 수 있습니다.

 

ExecutionPolicy의 scope은 5가지 종류가 있으며, 가장 기본이 되는 것은 맨 마지막의 LocalMachine 입니다. 각각의 설정 값은 레지스트리에서도 확인이 가능합니다.

1. MachinePolicy : GPO의 컴퓨터 정책을 통해 설정하는 경우

HKLM:\Software\Policies\Microsoft\Windows\Powershell 에 저장됨 (없으면 Undefined 임)

2. UserPolicy : GPO의 사용자 정책을 통해 설정하는 경우

HKCU:\Software\Policies\Microsoft\Windows\Powershell 에 저장됨 (없으면 Undefined 임)

3. Process : 현재 실행 중인 파워쉘 세션에만 적용되는 실행정책

4. CurrentUser : 현재 사용자에 적용되는 실행정책

HKCU:\Software\Microsoft\Powershell\1\ShellIds 에 저장됨 (없으면 Undefined 임)

5. LocalMachine : 로컬 컴퓨터에 적용되는 실행정책

HKLM:\Software\Microsoft\Powershell\1\ShellIds 에 저장됨 (없으면 Undefined 임)

그럼 ExecutionPolicy가 가질 수 있는 5개(Undefined까지 총 6개)의 값이 어떤 의미인지 살펴보겠습니다.

Undefined

ExecutionPolicy를 설정하지 않았다는 의미이며, 기본 정책인 "Restricted"로 작동합니다.

Restricted

Windows 10의 ExecutionPolicy 기본 값이며, 이 경우 스크립트(~.ps1) 파일이 실행되지 않습니다. 단, Microsoft에서 만든 일부 스크립트 파일들은 실행이 가능하기도 한데, Microsoft에서 서명된 것이기 때문이 아닐까 합니다.

Unrestricted

이 설정은 Microsoft에서도 권장하지 않는 옵션인데, 모든 스크립트(서명되지 않은 스크립트 포함)를 실행할 수 있습니다. 악성코드를 실행시킬 수도 있기 때문에 왠만하면 사용하지 않는 것이 좋을 듯 합니다.

AllSigned

신뢰할 수 있는 인증기관이 서명한 스크립만 실행하는 옵션으로 보안이 가장 높지만, 해당 컴퓨터에서 작성된 스크립트라 하더라도 신뢰할 수 있는 인증기관이 서명하지 않았다면 실행이 불가능합니다.

Bypass

이 값은 다른 어플리케이션 내에 파워쉘 스크립트가 내장되거나, 별도의 자체 보안 설정을 갖추었을때 사용하기 위해 만들어졌으며, 차단되거나 별다른 경고 없이 실행됩니다.

RemoteSigned

이 값은 최신 Windows Server 버전(Windows Server 2012 R2 이후)의 Powershell 실행정책 기본값입니다.

해당 로컬 컴퓨터에서 에서 작성된 모든 스크립트는 실행이 가능하며, 인터넷에서 다운로드(IE, 크롬, 파이어폭스, 아웃룩 등)한 스크립트는 인증기관이 발행한 코드로 서명되어야만 실행이 가능합니다. 인터넷 이외의 소스로부터 다운로드 받거나 서명은 되었지만 악의적인 목적이 있는 스크립트는 위험이 있을 수도 있습니다.

Microsoft Windows PowerShell 팀에서 권장할 만큼 가장 많이 설정되는 값이며, 보안과 편리함의 균형을 어느정도 확보할 수 있습니담. 하지만 스크립트가 반드시 실행되어야 하는 컴퓨터에서만 사용하는 것이 바람직합니다.

위의 6가지 실행정책 값을 잘 읽어보셨다면 느끼셨을지도 모르지겠지만, ExecutionPolicy는 완벽한 보안이 될 수는 없다고 생각합니다. 그래서 일부 전문가분들은 자체적으로 보안에 더 신경을 쓰도록 Unrestricted로 설정할 것을 추천하기도 합니다. 보안을 생각한다면 ExecutionPolicy에만 의존하지 말아야 하겠습니다.

ExecutionPolicy 값 변경

기존의 ExecutionPolicy의 값을 변경하고자 한다면 크게 2가지의 방법이 있습니다.

첫번째는 Set-ExecutionPolicy cmdlet을 사용하는 방법입니다.

두번째는 Powershell.exe 실행 시 -ExecutionPolicy 옵션을 같이 사용하여 실행하는 방법입니다.

Set-ExecutionPolicy

Powershell 콘솔을 관리자 권한으로 실행 후, 아래와 같이 Set-ExecutionPolicy에 변경하고자 하는 실행정책 값을 입력하면 변경이 됩니다.

Set-ExecutionPolicy RemoteSigned
 

scope을 지정하지 않으면 기본적으로 LocalMachine에 적용되며, MachinePolicy, UserPolicy는 이 명령으로 변경이 불가능하며, 그룹정책GPO으로만 변경이 가능합니다.

아래와 같이 scope을 지정하여 변경할 수도 있습니다.

Set-ExecutionPolicy -scope CurrentUser RemoteSigned

Powershell.exe 실행 시 -ExecutionPolicy 옵션 사용

Powershell.exe 실행 시 -ExecutionPolicy 옵션을 함께 사용하면 실행정책이 GPO 혹은 로컬정책으로 적용되었다 하더라도 우선시 되며, 해당 Powershell 세션에서만 유효합니다.

아래 그림을 보면 잘 이해가 되실 것 같은데요, 현재 process scope의 실행정책은 Undefined로 설정이 되어 있습니다. 하지만 Powershell 실행 시 ExecutionPolicy를 Restricted로 지정하여 실행 ExecutionPolicy를 조회해 보면 현재 세션인 process scope의 ExecutionPolicy는 Restricted로 변경되어 있습니다.

현재 세선을 종료(exit)하면, 다시 ExecutionPolicy는 Undefined로 복귀된 것을 확인할 수 있습니다.

위에서도 잠시 언급했듯이, ExecutionPolicy는 완벽한 보안이 될 수 없습니다.

아무리 GPO를 통해 혹은 로컬정책을 통해 ExecutionPolicy를 지정한다 하더라도, Powershell 실행 시 옵션을 변경하여 실행한다면 모든 실행정책보다 우선하여 실행시킬 수도 있습니다.

이러한 내용이 뜻하는 바는 Powershell의 ExecutionPolicy는 완벽한 보안정책이 아니라, 사용자가 외부에서 다운받은 스크립트를 의도치 않게 무분별하게 실행하는 것을 방지하기 위한 것이라는 것입니다.

마지막으로 Execution Policy의 기본값은 OS별로 상이하며, Microsoft 문서에서도 이와 관련하여 명확하게 기술된 문서를 찾지는 못했는데, 제가 확인한 바에 의하면 아래와 같습니다.

- Windows 7, Windows 8, Windows 10 : Restricted

- Windows Server 2008, 2008 R2, 2012 : Restricted

- Windows Server 2012 R2, 2016, 2019 : RemoteSigned

기본적으로 최근 출시되는 서버 OS는 기본적으로 스크립트 사용이 가능하도록 설정되어 있는 반면, 클라이언트 OS는 사용이 불가능하게 설정되어 있습니다.

혹시 위 내용이 잘못되었다면 댓글 달아주세요.

"이 시스템에서 스크립트를 실행할 수 없으므로 ~~~파일을 로드할 수 없습니다"

"~~~ canno be loaded because running script is disabled on this system"

'경로 및 정보' 카테고리의 다른 글

AD(Active Directory) 공격  (0) 2025.10.07
Fileuplad via Stored XSS  (0) 2025.10.07
CVE-2024-38819  (0) 2025.09.08
Proving Grounds: Butch [OSCP Prep 2025 — Practice 14]  (0) 2025.08.31
What is Azure Application Gateway v2  (2) 2025.06.06
블로그 이미지

wtdsoul

,