토큰 추적

마지막 업데이트: 2022년 5월 7일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

사용자 세션 관리

Firebase 인증 세션은 수명이 깁니다. 사용자가 로그인할 때마다 사용자 인증 정보가 Firebase 인증 백엔드에 전송되고 Firebase ID 토큰(JWT) 및 갱신 토큰으로 교환됩니다. Firebase ID 토큰은 수명이 짧아서 1시간 동안만 지속되며, 갱신 토큰을 사용하여 새 ID 토큰 추적 토큰을 가져올 수 있습니다. 갱신 토큰은 다음 중 한 가지 상황이 발생할 때만 만료됩니다.

  • 사용자가 삭제됨
  • 사용자가 비활성화됨
  • 사용자의 계정에서 중대한 변화가 감지됨. 비밀번호 또는 이메일 주소 업데이트 등의 이벤트가 여기에 해당합니다.

Firebase Admin SDK는 지정된 사용자의 갱신 토큰을 토큰 추적 취소하는 기능을 제공합니다. 또한 ID 토큰 취소 여부를 확인하는 API가 제공됩니다. 이러한 기능을 통해 사용자 세션을 더욱 세밀하게 제어할 수 있습니다. SDK는 의심스러운 환경에서 세션을 사용하지 못하도록 제한하는 기능 및 잠재적인 토큰 도난을 복구하는 메커니즘을 제공합니다.

갱신 토큰 취소

사용자가 기기 분실이나 도난을 신고하면 사용자의 기존 갱신 토큰을 취소할 수 있습니다. 마찬가지로 일반적인 취약점이 발견되었거나 활성 토큰이 대규모로 유출된 정황이 의심되면 listUsers API를 사용하여 지정된 프로젝트의 모든 사용자를 찾아 토큰을 취소할 수 있습니다.

비밀번호를 재설정해도 사용자의 기존 토큰이 취소되지만, 이 경우 Firebase 인증 백엔드에서 취소를 자동으로 처리합니다. 취소하면 사용자가 로그아웃되고 다시 인증하라는 메시지가 표시됩니다.

다음은 Admin SDK를 사용하여 특정 사용자의 갱신 토큰을 취소하는 구현 예시입니다. Admin SDK를 초기화하려면 설정 페이지의 안내를 따르세요.

Node.js

Python

ID 토큰 취소 감지

Firebase ID 토큰은 스테이트리스(Stateless) JWT이므로 토큰이 취소되었는지를 확인하려면 Firebase 인증 백엔드에 토큰의 상태를 요청해야 합니다. 따라서 이 검사를 서버에서 수행하면 네트워크 왕복이 추가로 발생하므로 경제적이지 않습니다. Admin SDK를 사용하여 검사하는 대신 취소를 확인하는 Firebase 보안 규칙을 설정하면 이러한 네트워크 요청을 피할 수 있습니다.

Firebase 토큰 추적 보안 규칙에서 ID 토큰 취소 감지

보안 규칙을 사용하여 ID 토큰 취소를 감지하려면 먼저 몇 가지 사용자별 메타데이터를 저장해야 합니다.

Firebase 실시간 데이터베이스에서 사용자별 메타데이터 업데이트

갱신 토큰이 취소된 타임스탬프를 저장합니다. 이 작업은 Firebase 보안 규칙을 통해 ID 토큰 취소를 추적하는 데 필요합니다. 그러면 데이터베이스 내에서 효율적으로 검사할 수 있습니다. 아래 코드 샘플에서는 이전 섹션에서 확인한 UID 및 취소 시간을 사용합니다.

Node.js

Python

Firebase 보안 규칙에 검사 추가

이 검사를 수행하려면 클라이언트 쓰기 권한 없이 사용자별 취소 시간을 저장하는 규칙을 설정합니다. 이전 예제와 같이 마지막 취소 시간의 UTC 타임스탬프로 업데이트하면 됩니다.

인증된 액세스를 요구하는 모든 데이터에 대해 다음과 같은 규칙을 구성해야 합니다. 이 로직은 ID 토큰이 취소되지 않은 인증된 사용자만 보호된 데이터에 액세스하도록 허용합니다.

SDK에서 ID 토큰 취소 감지

서버에서 갱신 토큰 취소 및 ID 토큰 검증과 관련하여 다음 로직을 구현하세요.

사용자의 ID 토큰을 확인해야 할 때는 checkRevoked 불리언 플래그를 verifyIdToken 에 추가로 전달해야 합니다. 사용자의 토큰이 취소되었으면 클라이언트에서 사용자를 로그아웃 처리하거나 Firebase 인증 클라이언트 SDK가 제공하는 재인증 API를 사용하여 재인증하도록 요청해야 합니다.

플랫폼의 Admin SDK를 초기화하려면 설정 페이지의 안내를 따르세요. ID 토큰을 가져오는 예시는 verifyIdToken 섹션에 있습니다.

Node.js

Python

클라이언트에서 토큰 취소에 응답

Admin SDK를 통해 토큰이 취소된 경우 클라이언트에 취소 사실이 통지되고 사용자는 재인증을 요청받거나 로그아웃 처리됩니다.

보안 강화: IP 주소 제한사항 적용

토큰 도난을 감지하는 일반적인 보안 메커니즘은 요청 IP 주소의 출처를 추적하는 것입니다. 예를 들어 항상 동일한 IP 주소(요청하는 서버)에서 요청이 전송되는 경우 단일 IP 주소 세션을 적용할 수 있습니다. 또는 사용자 IP 주소의 위치정보가 갑자기 바뀌었거나 의심스러운 출처에서 요청을 보낸 것이 감지될 경우 사용자의 토큰을 취소할 수 있습니다.

IP 주소를 기반으로 보안 검사를 수행하려면 인증된 모든 요청에 대해 ID 토큰을 조사하여 요청의 IP 주소가 이전의 신뢰할 수 있는 IP 주소와 일치하거나 신뢰 가능 범위에 속하는지 확인한 후에 제한된 데이터에 대한 액세스를 허용합니다. 예를 들면 다음과 같습니다.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

비동기 애플리케이션을 위한 Java 에이전트 API

New Relic for Java (에이전트 버전 3.37 이상)에는 비동기 활동을 계측하는 API가 포함되어 있습니다. 지원되는 프레임워크 의 경우 에이전트는 일반적으로 비동기 작업을 자동으로 계측합니다. 그러나 비동기 API는 세부 정보를 추가하는 데 여전히 유용할 수 있습니다. 이 문서는 앱을 계측하기 위해 토큰과 세그먼트를 사용하는 예를 제공합니다.

  • New Relic이 APM UI에서 비동기식 계측 및 디스플레이 작동 방식에 대한 자세한 내용은 비동기식 애플리케이션 모니터링 고려 사항을 참조하십시오.
  • 실제 클래스와 메소드에 대한 자세한 내용은 Javadoc 을 참조하십시오.
  • Java 에이전트 API에 대한 일반 정보는 Java 에이전트 API 안내서 를 참조하십시오.
  • 일반적인 문제를 해결하려면 Java 비동기 애플리케이션 문제 해결 을 참조하십시오.토큰 추적

비동기 추적 도구: 토큰 및 세그먼트

Java 에이전트 API는 비동기 활동을 추적하는 두 가지 방법을 제공합니다.

  • 토큰 : 비동기 작업 단위를 특정 트랜잭션에 연결하기 위해 스레드 간에 토큰이 전달됩니다. 그들은 어떤 타이밍도 직접 수행하지 않습니다.
  • 세그먼트 : 세그먼트는 비동기 애플리케이션 코드의 임의 부분을 측정하는 데 사용되며 반드시 메서드나 스레드와 연관되지는 않습니다. 세그먼트는 일반적으로 콜백 메커니즘에 의해 완료된 외부 호출을 추적하는 데 사용됩니다.

토큰을 사용하여 별도의 스레드에 있는 임의의 작업 단위를 연결합니다. 이 섹션에서는 토큰 관련 호출을 함께 사용하여 비동기 작업을 계측하는 방법을 설명합니다. 클래스 및 메소드에 대한 자세한 정보는 Javadoc을 참조하십시오.

토큰을 사용하려면 먼저 토큰을 만든 다음 다른 호출을 원래 트랜잭션에 연결해야 합니다. 다른 호출 내에서 가능한 한 빨리 토큰을 연결해야 합니다. 토큰을 즉시 연결하지 않으면 연결하려는 호출 아래에 @Trace 이 포함된 메서드가 손실될 위험이 있습니다. 원래 호출에서 토큰을 만료시킬 수도 있습니다. 그러면 Java 에이전트가 New Relic UI에서 작업을 연결합니다. 다음 예에서는 토큰 관련 호출을 함께 사용하는 방법을 보여줍니다.

1. 트랜잭션을 시작한 다음 토큰을 생성하고 만료합니다.

아래 코드 스니펫에서 토큰 추적 parallelStream() 메서드를 고려하세요. requestItemAsync() 에 대한 일부 호출은 별도의 스레드에서 발생하기 때문에 토큰이 생성되고 해당 비동기 작업을 다시 요청 스레드에 연결하기 위해 전달됩니다.

이 샘플의 에이전트 API 호출은 다음과 같습니다.

  • @Trace(dispatcher = true) : 에이전트에게 트랜잭션을 시작하도록 지시합니다. 이 방법에 대한 자세한 내용은 Javadoc 을 참조하십시오.
  • getToken() : 작업을 함께 연결할 토큰을 만듭니다. 이 방법에 대한 자세한 내용은 Javadoc 을 참조하십시오.
  • token.expire() : 토큰이 만료됩니다. 이렇게 하면 트랜잭션이 종료됩니다. 이 방법에 대한 자세한 내용은 Javadoc 을 참조하십시오.
2. 트랜잭션을 비동기로 표시하고 요청 스레드에 연결

다음 코드 예시는 요청 스레드와 별도의 스레드에서 실행될 수 있는 requestItemAsync 를 보여줍니다. 이러한 이유로 이전 코드 예에서 생성된 토큰은 requestItemAsync 의 트랜잭션에 연결됩니다. requestItemAsync() 에는 기존 트랜잭션에 연결된 경우 이 메서드를 추적하도록 에이전트에 알리는 @Trace(async=true) 주석이 있습니다.

parallelStream() 이 모든 결과를 수집한 후 토큰이 만료됩니다. 이는 parallelStream() 이 완료된 후 트랜잭션이 열린 상태로 유지되지 않도록 하기 때문에 중요합니다.

이 샘플의 에이전트 API 호출은 다음과 같습니다.

  • @Trace(async = true) : 트랜잭션을 시작합니다. 이 토큰 추적 방법에 대한 자세한 내용은 Javadoc 을 참조하십시오.
  • token.link() : requestItemAsync() 에서 수행 중인 작업(다른 스레드에서 실행 중임)을 요청 스레드에 연결합니다. 이 방법에 대한 자세한 내용은Javadoc 을 참조하십시오.
3. New Relic UI에서 비동기 추적 보기

다음은 이 끝점에 대한 APM UI의 트랜잭션 추적 예입니다.

token trace.png

one.newrelic.com > APM > (앱 선택) > Transactions > Transaction trace > Trace details : 토큰과 연결된 모든 비동기 메서드 호출은 비동기 아이콘입니다.

토큰과 연결된 모든 비동기 메서드 호출은 드릴다운 열의 비동기 아이콘. 같은 토큰 추적 스레드에 있는 메서드를 연결할 필요는 없지만 그렇게 해도 부정적인 영향은 없습니다. parallelStream() 예와 같이 단일 토큰을 공유할 수 있는 경우가 많습니다.

기본적으로 트랜잭션은 최대 3000개의 토큰을 생성할 수 있으며 각 토큰의 기본 제한 시간은 180초입니다. 전자 한도는 token_limit 구성 옵션으로 변경하고 후자는 token_timeout 구성 옵션으로 변경할 수 있습니다. token_limit 를 초과하는 트랜잭션에 대한 추적에는 token_clamp 속성이 포함됩니다. 구성 옵션을 늘리면 에이전트 메모리 사용량이 늘어날 수 있습니다.

세그먼트: 임의의 비동기 활동 시간

세그먼트는 메서드나 스레드와 반드시 연관되지 않은 비동기 애플리케이션 코드의 임의 부분을 측정하는 데 사용됩니다. 이것은 외부 서비스에 대한 연결 시간에 가장 일반적으로 사용됩니다. 다음을 수행하려는 경우 세그먼트를 사용합니다.

Cryto.com의 Cronos는 CRC-20 토큰을 추적하기 위해 Chainalysis와 협력

수요일에 공유된 발표에 따르면 Cronos는 실시간 트랜잭션 모니터링을 허용하기 위해 블록체인 토큰 추적 인텔리전스 회사 Chainalysis와 협력했습니다 Cronos(CRO) 토큰 및 Cronos 네트워크에서 실행되는 모든 CRC-20 토큰에 대한 기능.

새로운 규정 준수 통합은 기관, 암호화폐 거래소 및 디지털 자산 펀드가 CRC-20 토큰 거래를 추적할 수 있도록 설계되어 사용자가 엄청난 양의 활동을 수행하고 고위험 거래를 식별합니다. 특히 협력을 통해 기관과 거래소는 가장 시급한 문제에 집중하고 의심스러운 행위를 적절하게 보고할 수 있습니다.

통합은 다음 분야에서 또 다른 한 걸음을 내디뎠습니다. Cronos 블록체인 및 이에 배포된 디지털 자산의 진화 및 제도화. “애플리케이션 개발자와 서비스 제공업체는 최첨단 도구와 서비스에 액세스할 수 있습니다.” “이러한 중요한 토대 중 하나는 Chainalysis 데이터 플랫폼입니다.”라고 Cronos의 매니징 디렉터인 Ken Timsit은 말했습니다.

Cronos 메인넷은 코스모스와 이더리움 가상 머신(EVM) 생태계 간의 상호 운용성을 향상시키는 것을 목표로 2021년 11월에 배포될 예정입니다. 탈중앙화 금융(DeFi), 대체 불가 토큰(NFT) 및 GameFi 앱을 촉진하기 위해 만들어진 Cronos는 450,000명 이상의 DeFi 및 NFT 사용자를 보유하고 있으며 협업을 형성했습니다.

2016년에 설립된 크립토닷컴(Crypto.com)은 코인게코(CoinGecko) 데이터에 따르면 작성 당시 일일 거래량이 평균 33억 달러에 달하는 세계 최대 암호화폐 거래소 중 하나입니다.

Crypto.com은 고유 토큰인 Crypto.org 코인과 함께 2021년 3월 자체 분산형 오픈 소스 블록체인 Crypto.org 체인을 설립했습니다. (CRO). 2022년 2월, Cronos 메인넷 출시 3개월 만에 Crypto.org는 Crypto.org 코인을 Cronos 토큰으로 변경했습니다.

Chainalysis , Cronos의 새로운 규정 준수 파트너는 미국 및 전 세계의 주요 정부 기관 및 금융 기관과의 협력으로 잘 알려진 세계 최대의 암호화 및 블록체인 정보 기관 중 하나입니다.

Chainalysis는 지난 달 미국 금융 서비스 회사인 Cross River와 협력하여 회사가 암호화 제품을 확장함에 따라 안전한 암호화폐 거래 및 규정 준수를 보장했습니다. 이전에 회사는 암호화폐 친화적인 거래 앱인 Robinhood와 같은 플랫폼과 협력하여 CryptoKitties 게임의 제작자인 Dapper Labs에 규정 준수 도구를 제공했습니다.

Cronos, 선도적인 글로벌 암호화폐 거래소 Crypto.com이 후원하는 토큰 추적 이더리움 호환 블록체인 네트워크가 규정 준수를 보장하기 위해 새로운 계약을 체결했습니다.

토큰 추적

Ethereum 0x9b2d. b6b829e

Ethereum 0x9b2d. b6b829e

Grey Token 계약

지갑 네트워크를 변경해주세요

메타마스크 애플리케이션의 전자 지갑 네트워크를 변경하여 이 장기 구매 계약을 추가하십시오.

Grey Token 태그

자가 보고된 태그

GREY 라이브 가격 데이터

Grey is a Metaverse and NFT Token named after the most popular alien race - Grey. We are the premier 토큰 추적 token for the sci-fi and paranormal communities with a native NFT Marketplace, P2E Game development, Metaverse Avatars to go along with its ever expanding Metaverse empire. Grey also has The Grey Space; a Crypto YouTube for the paranormal and sci-fi communities that allow users to upload videos and vote on their favorites with the winners getting minted into NFTs, which is currently available on PC, Android and IOS.

[Microsoft 365 보안 강화 방안] AD FS 토큰 서명 인증서 탈취를 시작으로 Azure AD까지 수직 이동으로 뚫고 들어가는 공격

2020년 12월 파이어아이는 UNC2452라고 명명 후 지속해 추적 중인 공격자의 침해 캠페인을 공개했습니다. 맨디언트는 추적과 분석을 통해 이 공격자가 온프레미스 환경에 접근 후 Microsoft 365에 대한 접근 권한까지 얻는 것을 확인했습니다. 네, 온프레미스 네트워크를 첫 공격 목표로 잡은 후 클라우드 서비스까지 침해한 것입니다.

내부 네트워크 침투 후 클라우드까지 이동한 케이스

UNC2452의 침해 활동은 가벼이 여길 것이 아닙니다. 클라우드 이용에 관심이 있는 조직이라면 새로운 내부 이동 패턴에 주목해야 합니다. 보통 초기 침투 후 내부 이동을 하는 경우 주로 사내 네트워크 환경에서 행위가 이루어집니다. 반면에 UNC2452의 침해는 내부 네트워크에 접근한 후 권한을 획득하고, 이를 이용해 클라우드 서비스까지 침해하는 이동 경로를 보여 줍니다. ​내부 이동에 있어 기업이 주의해야 할 패턴이라 판단하여 맨디언트는 적절한 방어 전략을 안내하기 위해 백서(Remediation and Hardening Strategies for Microsoft 365 to Defend Against UNC2452)를 발표했습니다. 더불어 맨디언트는 UNC2452 침해 관련해 감사를 수행하는 데 필요한 스크립트인 'Azure AD Investigator'를 깃허브 페이지에 올려놓았습니다. Microsoft 365를 이용 중이라면 감사 스크립트를 한번 돌려 보는 것을 권장합니다.

UNC2452가 사용한 전술, 기술, 절차(TTP)

맨디언트는 UNC2452가 다음과 같은 네 가지 기본 기술을 조합하여 침해 기업의 내부 네트워크에서 Microsoft 365 클라우드 서비스로 이동하는 것을 관찰하였습니다.

  1. AD FS(Active Directory Federation Services) 토큰 서명 인증서를 탈취해 임의 사용자에 대한 토큰을 위조합니다. 이를 Golden SAML 기법이라 하는데, 자세한 내용은 백서를 참조 바랍니다. 이런 식의 접근을 통해 공격자는 사용자의 암호나 다중 인증(MFA: Multi Factor Authentication) 메커니즘을 거치지 않고도 Microsoft 365와 같이 페더레이트된 리소스 제공자에 인증을 통과할 수 있습니다.
  2. Azure AD에서 신뢰할 수 있는 도메인을 수정하거나 추가하여 공격자가 제어하는 새로운 IdP(Identity Provider)를 추가합니다. 이런 식으로 공격자는 임의 사용자에 대한 토큰을 위조할 수 있으며, 이를 통해 Azure AD 백도어를 만듭니다. 이를 통해 온프레미스에서 클라우드로 수직 이동할 수 토큰 추적 있는 길을 틉니다.
  3. Microsoft 365 계정과 동기화된 글로벌 관리자, 애플리케이션 관리자 같은 높은 권한이 있는 사용자의 자격 증명을 침해합니다.
  4. 기존 Microsoft 365에 새로운 애플리케이션 서비스 자격 증명을 추가합니다. 이를 통해 Azure AD 권한 상승을 합니다. 이 방법에 대한 기술적 상세 내용을 잘 정리한 블로그가 있으니, 관심 있는 분은 해당 글을 참조 바랍니다.

이상으로 UNC2452 캠페인 관련 주요 내용을 알아보았습니다. UNC2452의 TTP 그리고 침해를 완화하는 방안에 대한 상세 내용은 백서를 참조 바랍니다. 참고로 다음 표를 통해 FireEye Helix가 UNC2452 침해를 어떤 로직 하에 탐지했는지 그리고 이들 얼럿은 MITRE가 정의한 공격 기술 중 어떤 항목과 관련이 있는지를 알 수 있습니다.


0 개 댓글

답장을 남겨주세요