10 KiB
macOS 키체인
htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**까지 AWS 해킹을 배우세요!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- PEASS Family를 발견하세요, 우리의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
WhiteIntel
WhiteIntel은 다크 웹을 활용한 검색 엔진으로, 스틸러 악성 소프트웨어에 의해 회사나 고객이 침해되었는지 확인하는 무료 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보 도난 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
그들의 웹사이트를 확인하고 무료로 엔진을 시험해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
주요 키체인
- 사용자 키체인 (
~/Library/Keychains/login.keycahin-db
)은 애플리케이션 비밀번호, 인터넷 비밀번호, 사용자 생성 인증서, 네트워크 비밀번호 및 사용자 생성 공개/비공개 키와 같은 사용자별 자격 증명을 저장하는 데 사용됩니다. - 시스템 키체인 (
/Library/Keychains/System.keychain
)은 WiFi 비밀번호, 시스템 루트 인증서, 시스템 비공개 키 및 시스템 애플리케이션 비밀번호와 같은 시스템 전체 자격 증명을 저장합니다.
비밀번호 키체인 액세스
이러한 파일들은 내재적인 보호가 없지만 다운로드될 수 있으며 사용자의 평문 암호가 필요하여 복호화됩니다. Chainbreaker와 같은 도구를 사용하여 복호화할 수 있습니다.
키체인 항목 보호
ACLs
키체인의 각 항목은 **액세스 제어 목록 (ACLs)**에 의해 관리되며, 키체인 항목에 대해 다양한 작업을 수행할 수 있는 사용자를 규정합니다. 이에는 다음이 포함됩니다:
- ACLAuhtorizationExportClear: 보유자가 비밀의 평문을 가져올 수 있도록 합니다.
- ACLAuhtorizationExportWrapped: 보유자가 다른 제공된 암호로 암호화된 평문을 가져올 수 있도록 합니다.
- ACLAuhtorizationAny: 보유자가 모든 작업을 수행할 수 있도록 합니다.
ACLs는 프롬프트 없이 이러한 작업을 수행할 수 있는 신뢰할 수 있는 애플리케이션 목록과 함께 제공됩니다. 이는 다음과 같을 수 있습니다:
- N
il
(인증이 필요 없음, 모두 신뢰함) - 빈 목록 (아무도 신뢰하지 않음)
- 특정 애플리케이션 목록.
또한 항목에는 **ACLAuthorizationPartitionID
**라는 키가 포함될 수 있는데, 이는 teamid, apple, 및 cdhash를 식별하는 데 사용됩니다.
- teamid가 지정된 경우, 항목 값을 프롬프트 없이 액세스하려면 사용된 애플리케이션은 동일한 teamid를 가져야 합니다.
- apple이 지정된 경우, 앱은 Apple에 의해 서명되어야 합니다.
- cdhash가 표시된 경우, 앱은 특정 cdhash를 가져야 합니다.
키체인 항목 생성
**Keychain Access.app
**을 사용하여 새로운 항목을 만들 때 다음 규칙이 적용됩니다:
- 모든 앱은 암호화할 수 있습니다.
- 어떤 앱도 내보내기/복호화할 수 없습니다 (사용자에게 프롬프트 없이).
- 모든 앱은 무결성 검사를 볼 수 있습니다.
- 어떤 앱도 ACL을 변경할 수 없습니다.
- partitionID는 **
apple
**로 설정됩니다.
애플리케이션이 키체인에 항목을 만드는 경우, 규칙은 약간 다릅니다:
- 모든 앱은 암호화할 수 있습니다.
- 항목을 내보내기/복호화할 수 있는 것은 생성 애플리케이션 (또는 명시적으로 추가된 다른 앱)뿐입니다 (사용자에게 프롬프트 없이).
- 모든 앱은 무결성 검사를 볼 수 있습니다.
- 어떤 앱도 ACL을 변경할 수 없습니다.
- partitionID는 **
teamid:[teamID here]
**로 설정됩니다.
키체인 액세스
security
# Dump all metadata and decrypted secrets (a lot of pop-ups)
security dump-keychain -a -d
# Find generic password for the "Slack" account and print the secrets
security find-generic-password -a "Slack" -g
# Change the specified entrys PartitionID entry
security set-generic-password-parition-list -s "test service" -a "test acount" -S
API
{% hint style="success" %} 프롬프트를 생성하지 않는 시크릿의 키체인 열거 및 덤프는 LockSmith 도구를 사용하여 수행할 수 있습니다. {% endhint %}
각 키체인 항목에 대한 정보를 나열하고 가져옵니다:
- API **
SecItemCopyMatching
**은 각 항목에 대한 정보를 제공하며 사용할 때 설정할 수 있는 몇 가지 속성이 있습니다: kSecReturnData
: true로 설정하면 데이터를 복호화하려고 시도합니다 (잠재적인 팝업을 피하려면 false로 설정)kSecReturnRef
: 키체인 항목에 대한 참조도 가져옵니다 (나중에 팝업 없이 복호화할 수 있는 경우 true로 설정)kSecReturnAttributes
: 항목에 대한 메타데이터 가져오기kSecMatchLimit
: 반환할 결과 수kSecClass
: 어떤 종류의 키체인 항목인지
각 항목의 ACL 가져오기:
- API **
SecAccessCopyACLList
**를 사용하여 키체인 항목의 ACL을 가져올 수 있으며 ACL 목록을 반환합니다 (ACLAuhtorizationExportClear
와 이전에 언급된 다른 항목과 같은) 각 목록에는 다음이 포함됩니다: - 설명
- 신뢰할 수 있는 애플리케이션 목록. 이것은 다음과 같을 수 있습니다:
- 앱: /Applications/Slack.app
- 이진 파일: /usr/libexec/airportd
- 그룹: group://AirPort
데이터 내보내기:
- API **
SecKeychainItemCopyContent
**는 평문을 가져옵니다 - API **
SecItemExport
**는 키와 인증서를 내보내지만 내보낼 내용을 암호화하려면 암호를 설정해야 할 수도 있습니다
프롬프트를 생성하지 않고 시크릿을 내보내기 위한 요구 사항은 다음과 같습니다:
- 1개 이상의 신뢰할 수 있는 앱이 목록에 있는 경우:
- 적절한 권한이 필요합니다 (
Nil
, 또는 비밀 정보에 액세스하기 위한 권한이 허용된 앱 목록의 일부여야 함) - 코드 서명이 PartitionID와 일치해야 합니다
- 코드 서명이 하나의 신뢰할 수 있는 앱과 일치해야 합니다 (또는 올바른 KeychainAccessGroup의 구성원이어야 함)
- 모든 애플리케이션이 신뢰할 경우:
- 적절한 권한이 필요합니다
- 코드 서명이 PartitionID와 일치해야 합니다
- PartitionID가 없는 경우 이는 필요하지 않습니다
{% hint style="danger" %} 따라서 애플리케이션이 1개만 나열된 경우 해당 애플리케이션에 코드를 삽입해야 합니다.
PartitionID에 apple이 표시된 경우 **osascript
**를 사용하여 액세스할 수 있으므로 PartitionID에 apple이 포함된 모든 애플리케이션에 신뢰할 수 있습니다. **Python
**도 이에 사용할 수 있습니다.
{% endhint %}
두 가지 추가 속성
- Invisible: UI 키체인 앱에서 항목을 숨기는 부울 플래그입니다
- General: 메타데이터를 저장하는 데 사용됩니다 (따라서 암호화되지 않음)
- Microsoft는 모든 민감한 엔드포인트에 액세스하기 위한 모든 리프레시 토큰을 평문으로 저장했습니다.
참고 자료
WhiteIntel
WhiteIntel은 다크 웹을 기반으로 한 검색 엔진으로, 회사 또는 그 고객이 스틸러 악성 소프트웨어에 의해 침해당했는지 확인하는 무료 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 도난당한 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격에 대항하는 것입니다.
그들의 웹사이트를 방문하여 무료로 엔진을 시도해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
제로부터 AWS 해킹을 배우고 전문가가 되기까지 htARTE (HackTricks AWS Red Team Expert)와 함께!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에 광고하거나 HackTricks를 PDF로 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구입하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 디스코드 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.