{"id":21483,"date":"2024-03-22T16:25:02","date_gmt":"2024-03-22T15:25:02","guid":{"rendered":"https:\/\/www.nextron-systems.com\/?p=21483"},"modified":"2024-10-11T16:04:26","modified_gmt":"2024-10-11T14:04:26","slug":"unveiling-kamikakabot-malware-analysis","status":"publish","type":"post","link":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/","title":{"rendered":"Unveiling KamiKakaBot &#8211; Malware Analysis"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; admin_label=&#8221;section&#8221; _builder_version=&#8221;4.16&#8243; da_disable_devices=&#8221;off|off|off&#8221; global_colors_info=&#8221;{}&#8221; da_is_popup=&#8221;off&#8221; da_exit_intent=&#8221;off&#8221; da_has_close=&#8221;on&#8221; da_alt_close=&#8221;off&#8221; da_dark_close=&#8221;off&#8221; da_not_modal=&#8221;on&#8221; da_is_singular=&#8221;off&#8221; da_with_loader=&#8221;off&#8221; da_has_shadow=&#8221;on&#8221;][et_pb_row admin_label=&#8221;row&#8221; _builder_version=&#8221;4.16&#8243; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; custom_padding=&#8221;|||&#8221; global_colors_info=&#8221;{}&#8221; custom_padding__hover=&#8221;|||&#8221;][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>Back in January 2023 Group-IB first reported and documented the TTPs of DarkPink, an APT group that targets the Asia-Pacific regions.<\/span><\/p>\n<p><span>We\u2019ve been monitoring KamiKakaBot samples since September of last year. And at the start of this year in January we\u2019ve noticed 2 new samples being uploaded to Virustotal.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k1-1.png&#8221; title_text=&#8221;k1&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>These 2 new samples have had a very low detection rate. Which led us to investigate them a bit closer.<\/span><\/p>\n<p><span>\u00a0<\/span><span>The following is a full writeup on the newer variants KamiKakaBot samples from the initial lure to full persistence on disk and credential stealer component.<\/span><\/p>\n<blockquote>\n<p><span><a href=\"https:\/\/twitter.com\/jaydinbas\">Johann Aydinbas<\/a> was the first to spot this and mention it on <a href=\"https:\/\/twitter.com\/jaydinbas\/status\/1749752395930755524\">twitter<\/a>. Kudos to him. <\/span><\/p>\n<\/blockquote>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>Start Of The Infection<\/strong><\/h1>\n<p><span>As discussed in the original Group-IB research blog, DarkPink APT uses ISO files as a phishing mechanism. And this case is not much different in terms of structure.The ISO in question is named <strong>\u201cProposed Concept Note on the AOIP-based Comprehensive Regional Architecture.iso\u201d<\/strong> and contains the following.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k2-1.png&#8221; title_text=&#8221;ka2&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\">\n<tbody>\n<tr>\n<td width=\"301\" style=\"width: 50.6217%; text-align: center;\">\n<p><span>Name<\/span><\/p>\n<\/td>\n<td width=\"301\" style=\"width: 49.2007%; text-align: center;\">\n<p><span>Description<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"301\" style=\"width: 50.6217%; text-align: center;\">\n<p><span>ID SOM LETTER ON CONCEPT NOTE ON THE AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE.PDF<\/span><\/p>\n<\/td>\n<td width=\"301\" style=\"width: 49.2007%; text-align: center;\">\n<p><span>Lure document that is never used by the malware <br \/><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"301\" style=\"width: 50.6217%; text-align: center;\">\n<p><span>CN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOCX.EXE<\/span><\/p>\n<\/td>\n<td width=\"301\" style=\"width: 49.2007%; text-align: center;\">\n<p><span>Legitimate WinWord.EXE binary masqueraded as a double extension file to incentivise the victim to click it<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"301\" style=\"width: 50.6217%; text-align: center;\">\n<p><span>~CN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOC<\/span><\/p>\n<\/td>\n<td width=\"301\" style=\"width: 49.2007%; text-align: center;\">\n<p><span>Lure document that also contains the .NET XML task that will load the KamiKakaBot main component as well as the credential stealer component<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"301\" style=\"width: 50.6217%; text-align: center;\">\n<p><span>WWLIB.DLL<\/span><\/p>\n<\/td>\n<td width=\"301\" style=\"width: 49.2007%; text-align: center;\">\n<p><span>Loader<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span><\/span><\/p>\n<p><span>These newer KamiKakaBot samples use \u201cWWLIB.dll\u201d DLL in order to side-load the malicious payload, in contrast to \u201cMSVCR100.dll\u201d DLL that was used in older variants.<\/span><\/p>\n<p><span>Something to note is that winword.exe (which is the binary being used to sideload the WWLIB DLL) as well as many Microsoft Office utilities such as Excel, PowerPoint, etc are vulnerable to many other side loading vulnerabilities. As it\u2019s illustrated in the screenshot below that\u2019s taken from <a href=\"https:\/\/hijacklibs.net\/\">hijacklibs.net<\/a>.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k3.png&#8221; title_text=&#8221;k3&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>WWLIB Sideloading<\/strong><\/h1>\n<p><span>The infection starts when the victim launches the binary <strong><em>\u201cCN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOCX.EXE\u201d<\/em><\/strong> which is the legitimate \u201cWinWord.exe\u201d binary masqueraded as a word document using the double extension technique. It tries to side load the \u201cWWLIB.dll\u201d from the current directory.<\/span><\/p>\n<p><span>Once loaded, it starts by searching the current directory for a file that has the following characteristics:<\/span><\/p>\n<ul>\n<li><span> <\/span><span>Hidden<\/span><\/li>\n<li><span> <\/span><span>Read Only<\/span><\/li>\n<li><span> <\/span><span>Filename contains both \u201c~\u201d and \u201c.doc\u201d<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k4-1.png&#8221; title_text=&#8221;kk4&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The file that fits these characteristics was shipped inside of the ISO and in our case it has the name <strong><em>\u201c~CN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOC\u201d<\/em><\/strong><\/span><\/p>\n<p><span>Next, it\u2019ll start reading the aforementioned DOC file starting from the end and going up until a null byte is reached. That blob is then decrypted with a hardcoded XOR key. The content is an XML file that we will discuss later in this article.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k5-1.png&#8221; title_text=&#8221;kk5&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The next step is to decrypt the file name of the XML file that will be created next. This will result in <strong>\u201cwctA91F.tmp\u201d.<\/strong><\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k6-1.png&#8221; title_text=&#8221;kk6&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The XML file is then created under <strong>\u201cC:\\Users\\&lt;username&gt;\\AppData\\Local\\Temp\\\u201d<\/strong><\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k7-1.png&#8221; title_text=&#8221;kk7&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>We\u2019re providing a Python script that emulates the decryption routine mentioned above. It takes the \u201cDOC\u201d and a \u201cXOR\u201d key and outputs the XML in question.<\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k8-1.png&#8221; title_text=&#8221;kk8&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>After the decryption routine, the DLL will try to execute the lure document by locating the legitimate Word binary installed on the system. It does this by assuming that a \u201cStart Menu\u201d entry exists for Word.<\/span><\/p>\n<p><span>When an application is installed in Windows it can be added to the list of applications in the Start Menu. This is achieved by adding a shortcut \u201c.lnk\u201d file pointing to it. A default Microsoft Office Word installation creates a shortcut called \u201cWord.lnk\u201d in that location.<\/span><\/p>\n<p><span>The DLL chooses this method of execution to avoid hard coding different paths for the \u201cWinWord.exe\u201d binary. As the exact location will depend on which version is installed.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k9-1.png&#8221; title_text=&#8221;kk9&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>Once the Word.lnk shortcut is found it proceeds to execute the lure \u201c~CN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOC\u201d via <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/api\/processthreadsapi\/nf-processthreadsapi-createprocessw\">CreateProcessW<\/a><\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k10-1.png&#8221; title_text=&#8221;kk10&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>Below is the command line after execution.<\/span><\/p>\n<pre><strong>cmd \/c C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Word 2016.lnk ~CN AOIP-based Comprehensive Regional Architecture.doc<\/strong><\/pre>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>Persistence &amp; Execution<\/strong><\/h1>\n<p><span>Once the lure has been executed, the DLL sets up the following persistence mechanism in order to initiate the execution of the 2nd stage (XML payload) and to ensure execution across reboots.<\/span><\/p>\n<p>It starts by setting 3 environment variables that point to the following values.<\/p>\n<table style=\"border-collapse: collapse; width: 38.2595%;\" border=\"1\" height=\"240\">\n<tbody>\n<tr>\n<td width=\"201\" style=\"width: 10.582%; text-align: center;\"><strong><span>Name<\/span><\/strong><\/td>\n<td width=\"201\" style=\"width: 71.6049%; text-align: center;\"><strong><span>Value<\/span><\/strong><\/td>\n<td width=\"201\" style=\"width: 17.6367%; text-align: center;\"><strong><span>Description<\/span><\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"201\" style=\"width: 10.582%; text-align: center;\"><span>Msbd<\/span><\/td>\n<td width=\"201\" style=\"width: 71.6049%; text-align: center;\"><span>%WINDIR%\\Microsoft.NET\\Framework64\\&lt;version&gt;\\MSBuild.exe<\/span><\/td>\n<td width=\"201\" style=\"width: 17.6367%; text-align: center;\"><span>Legitimate path to MSBuild instance on the system<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"201\" style=\"width: 10.582%; text-align: center;\"><span>Pyps<\/span><\/td>\n<td width=\"201\" style=\"width: 71.6049%; text-align: center;\"><span>powershell<\/span><\/td>\n<td width=\"201\" style=\"width: 17.6367%; text-align: center;\"><span>PowerShell<\/span><\/td>\n<\/tr>\n<tr>\n<td width=\"201\" style=\"width: 10.582%; text-align: center;\"><span>Tepmrd<\/span><\/td>\n<td width=\"201\" style=\"width: 71.6049%; text-align: center;\"><span>%TEMP%\\wctA91F.tmp<\/span><\/td>\n<td width=\"201\" style=\"width: 17.6367%; text-align: center;\"><span>Path to the decrypted XML<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span>Once these variables are set. It overrides the Winlogon Shell registry entry in order to set up persistence.<\/span><\/p>\n<pre><strong><span>HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Shell = explorer.exe, explorer.exe \/e,\/root,%Pyps% -nop -w h \"Start-Process -N -F $env:Msbd -A $env:Temprd\"\n<\/span><\/strong><\/pre>\n<p><span>This will make sure that every time the current infected user logs onto the system, the above command is executed.<\/span><\/p>\n<p><span>The command leverages the fact that anything passed to the \u201cexplorer.exe\u201d binary is executed. If we replace the environment variables, we get the following PowerShell command:<\/span><\/p>\n<pre><strong><span>powershell -nop -w h \"Start-Process -N -F %WINDIR%\\Microsoft.NET\\Framework64\\v4.0.30319\\MSBuild.exe -A %TEMP%\\wctA91F.tmp\"<\/span><\/strong><\/pre>\n<p><span>Finally, it makes sure that the machine will shut down by setting a scheduled task called \u201cOneDriver Reporting Task\u201d that runs on a weekly basis, every Tuesday and Friday at 12:35PM executing the \u201cshutdown\u201d command:<\/span><\/p>\n<pre><strong><span>SCHTASKS \/CREATE \/f \/TN \"OneDriver Reporting Task\" \/TR \"shutdown \/l \/f\" \/SC WEEKLY \/d TUE,FRI \/ST 12:35 <\/span><\/strong><\/pre>\n<p><span>After a reboot the Msbuild process will compile and run the KamiKakaBot, which we will look at next.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>KamiKakaBot Says Compile Me Please<\/strong><\/h1>\n<p><span>In the previous section we\u2019ve seen that the side-loaded WWLIB.dll decrypted and dropped an XML in the temp directory that was going to be executed by MsBuild.<\/span><\/p>\n<p><span>The XML file uses an <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/msbuild\/msbuild-inline-tasks?view=vs-2022\">MsBuild inline task<\/a> to embed everything in one file, and it contains two components:<\/span><\/p>\n<ul>\n<li><span> <\/span><span>KamiKakaBot Main Payload.<\/span><\/li>\n<li><span> <\/span><span>KamiKakaBot Credential Stealer.<\/span><\/li>\n<\/ul>\n<p><span>The main payload is stored as an XOR encrypted base64 blob, whereas the credential stealer is simply XOR encrypted.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k11.png&#8221; title_text=&#8221;k11&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k12.png&#8221; title_text=&#8221;k12&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The decryption key is hardcoded in the task itself.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k13.png&#8221; title_text=&#8221;k13&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>The tasks start by generating a random name for the credential stealer, decrypting and storing it in the temp directory and setting its attributes to \u201cHidden\u201d.<\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k14.png&#8221; title_text=&#8221;k14&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>It then decodes and decrypts the main KamiKakaBot payload, which results in a ZIP file. This ZIP file is opened, and its entry is the DLL that will be directly loaded into memory and executed via the \u201cInvokeMember\u201d function.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k15.png&#8221; title_text=&#8221;k15&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>The main KamiKakaBot payload is invoked with three arguments which are the following:<\/p>\n<ul>\n<li>Encrypted Telegram Token.<\/li>\n<li>Telegram Chat ID.<\/li>\n<li>Credential Stealer DLL path.<\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>KamiKakaBot Main Payload<\/h1>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k16.png&#8221; title_text=&#8221;k16&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>KamiKakaBot starts by decrypting the passed \u201cTelegram Token\u201d and calling the \u201cExecute\u201d function to start the execution.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k17.png&#8221; title_text=&#8221;k17&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Execute Function<\/h2>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k18.png&#8221; title_text=&#8221;k18&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>The \u201cExecute\u201d function starts by initialising some variables.<\/p>\n<ul>\n<li><span> <\/span><span>It sets the variable <strong>\u201cAp1kkk3y\u201d<\/strong> which will contain the \u201cbot\u201d prefix and the telegram token for communication with the API.<\/span><\/li>\n<li><span> <\/span><span>It sets the variable <strong>\u201cCHATID\u201d<\/strong> with the passed on chat ID from the previous step.<\/span><\/li>\n<li><span> <\/span><span>It sets the variable <strong>\u201cIdentifyName\u201d<\/strong> by calling the \u201cgetIndentifyName\u201d function. Which is a function that uses the \u201cWindowsIdentity\u201d class from .NET in order to obtain the current user information. The results will be in the form<strong> \u201cDomain+=&#8230;=+Username\u201d<\/strong><\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k19.png&#8221; title_text=&#8221;k19&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<ul>\n<li><span> <\/span><span>It sets the \u201clinktel\u201d variable to the telegram API domain \u201c<a href=\"https:\/\/api.telegram.org\/\">https:\/\/api.telegram.org\/<\/a>\u201d<\/span><\/li>\n<li><span> <\/span><span>It sets the <strong>\u201cxmlName\u201d<\/strong> variable to the value of <strong>\u201cSystem.IO.Compression\u201d<\/strong><\/span><\/li>\n<li><span> <\/span><span>It then checks if the credential stealer file that was passed as an argument from the previous step and that resides on disk. If it does, then it converts its content into base64 for later use, stores it in the <strong>\u201cDat10dje1\u201d<\/strong> variable and then deletes the file from disk.<\/span><span><\/span><\/li>\n<\/ul>\n<p>After this initialization it starts the main function \u201cRun\u201d.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Run Function<\/h2>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k20.png&#8221; title_text=&#8221;k20&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The \u201cRun\u201d function is the &#8220;real&#8221; main function of KamiKakaBot. It starts by calling a function called <strong>\u201ck01mdhaj3yf\u201d<\/strong>.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k21.png&#8221; title_text=&#8221;k21&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>This function ensures the creation of a file in the temp directory with the name <strong>\u201c%TEMP%\\\\3f88dd57-6ce606be-54c358fb-c566587a.tmp\u201d.<\/strong> This text file will contain a string that\u2019s a combination of a substring from the Telegram Token and the string <strong>\u201c:0\u201d.<\/strong><\/span><\/p>\n<p><span>For example if the token string was this <strong>\u201cbot6860256103:ABFrlFzcLuyXU4HxKisFUhvhwKucyL4rDS0\u201d<\/strong> then the content of the text file would be <strong>\u201cABFrlFzcLuyXU4H:0\u201d. <\/strong>This string is parsed and depending on the value after the colon either a \u201c0\u201d or a positive integer value is returned.<\/span><\/p>\n<p><span>The result is used to determine the path of the following \u201cif\u201d clause.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k22.png&#8221; title_text=&#8221;k22&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The function \u201cs39fjMkdm\u201d will simply take the results from the previously set \u201cIdentifyName\u201d variable and send it to the attacker by using Telegram\u2019s \u201csendMessage\u201d API.<\/span><\/p>\n<p><span>Based on older samples the appended values \u201c12\u201d and \u201c21\u201d signify either a \u201cnew connection\u201d established or \u201creconnection\u201d respectively.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k23.png&#8221; title_text=&#8221;k23&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>Next, the function \u201cok0djfnakf\u201d is called which is responsible for launching the credential stealer component.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k24.png&#8221; title_text=&#8221;k24&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>This function simply takes the contents of the previously initialised variable <strong>\u201cDat10dje1\u201d<\/strong>, decodes it from its base64 form and loads it into memory.<\/span><\/p>\n<p><span>It then invokes the member function from the stealer with the name <strong>&#8220;JegrywbXVS&#8221;<\/strong> and passes to it a randomly generated name in the form<\/span><\/p>\n<pre><strong>xxxx-xxxx-xxxx-xxxx-xxxx.tmp<\/strong><\/pre>\n<p><span>After invoking the stealer, the function \u201c<strong>kowfnF1lwd3\u201d<\/strong> is called. Its aim is to send the data collected by the stealer as a ZIP file to the threat actor via the <a href=\"https:\/\/telegram-bot-sdk.readme.io\/reference\/senddocument\">sendDocument<\/a> API.<\/span><\/p>\n<blockquote>\n<p><span>Note: We\u2019ll discuss the functionality of the stealer in a separate section<strong>.<\/strong><\/span><\/p>\n<\/blockquote>\n<p><span>After this we reach the main C2 loop which is straightforward. It loops indefinitely waiting for commands from the threat actor. These commands are collected via the <a href=\"https:\/\/telegram-bot-sdk.readme.io\/reference\/getupdates\">getUpdates<\/a> API.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k25.png&#8221; title_text=&#8221;k25&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>The functions perform some checks related to the ChatID and MessageID to ensure that the commands are coming from the expected chat and commands aren\u2019t repeated.<\/span><\/p>\n<p><span>For a command to be passed a couple of conditions need to be satisfied.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k26.png&#8221; title_text=&#8221;k26&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<ul>\n<li><span> <\/span><span>The ChatID from the API response needs to be equal the ChatID of the sample<\/span><\/li>\n<li><span> <\/span><span>The From ID from the API response needs to be equal the ChatID of the sample<\/span><\/li>\n<li><span> <\/span><span>The Message ID from the API response needs to be bigger than the current stored value.<\/span><\/li>\n<\/ul>\n<p><span>While the 2 first conditions are straightforward. In order to obtain the current MessageID value, the function reads the contents of the file <strong>&#8220;3f88dd57-6ce606be-54c358fb-c566587a.tmp&#8221;<\/strong> from earlier and extracts the value stored after the colon.<\/span><\/p>\n<p><span>In our example <strong>\u201cabfrlfzcluyxu4h:0\u201d <\/strong>the extracted value will be \u201c0\u201d. The MessageID sent by the threat actor needs to be bigger than \u201c0\u201d. This is to keep track of the last executed command.<\/span><\/p>\n<p><span>The 2nd part of the condition that needs to be valid is that the command either starts with the string <strong>&#8220;<\/strong><strong>all+=&#8230;=+&#8221; <\/strong>or with <strong>&#8220;<\/strong><strong>Domain+=&#8230;=+Username&#8221; <\/strong>where \u201cDomain\u201d and \u201cUsername\u201d are from the infected user machine.<\/span><\/p>\n<p><span>Either way the result is passed on to the rest of the loop in order to execute the appropriate functions. The C2 accepts the special values to execute specific functions:<\/span><\/p>\n<ul>\n<li><span> <\/span><span><strong>1*<\/strong> &#8211; Send current user Identity.<\/span><\/li>\n<li><span> <\/span><span><strong>34<\/strong> &#8211; Load the credential stealer module and collect the data.<\/span><\/li>\n<li><span> <\/span><span><strong>91<\/strong> &#8211; Update the Telegram Token and Chat ID.<\/span><\/li>\n<li><span> <\/span><span><strong>45<\/strong> &#8211; Update the build XML file in order to provide a newer version or newer payload.<\/span><\/li>\n<\/ul>\n<p><span>If none of the above is sent then the command is passed on to the <strong>&#8220;s39fjMkdm&#8221;<\/strong> function, which will execute it via <strong>&#8220;Cmd.EXE&#8221;<\/strong>.<\/span><span><\/span><\/p>\n<pre><strong>cmd.exe \/c &lt;command&gt;<\/strong><\/pre>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k27.png&#8221; title_text=&#8221;k27&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>KamiKakaBot Credential Stealer <\/strong><\/h1>\n<p><span>The credential stealer component is straight forward. It starts by creating a new directory in the temp folder with the OS version as a name by calling the &#8220;<a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/api\/system.environment.osversion?view=net-8.0\">Environment.OSVersion.Version.ToString()<\/a>&#8221; function.<\/span><\/p>\n<p><span>The folder name will be in the form of <\/span><\/p>\n<pre><strong>C:\\Users\\&lt;username&gt;\\AppData\\Local\\Temp\\&lt;OSversion&gt;\n<\/strong><\/pre>\n<p><span>For example:<\/span><\/p>\n<pre><strong>C:\\Users\\&lt;username&gt;\\AppData\\Local\\Temp\\6.2.9200.0\n<\/strong><\/pre>\n<p><span>Its main goal is to steal credentials and login information from the user\u2019s browser. It focuses on Mozilla Firefox, Microsoft Edge and Google Chrome.<\/span><\/p>\n<p><span>It grabs the following file from the Firefox profile folder:<\/span><strong><\/strong><\/p>\n<ul>\n<li><span> <\/span><strong><span>autofill-profiles.json<\/span><\/strong><\/li>\n<li><strong> cookies.sqlite<\/strong><\/li>\n<li><strong>key3.db<\/strong><\/li>\n<li><strong>key4.db<\/strong><\/li>\n<li><strong>logins.json<\/strong><strong><\/strong><\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k28.png&#8221; title_text=&#8221;k28&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>It extracts the decryption key from the Chromium based browsers Chrome and Edge and saves it into a text file. It then copies the following files from their respective profile folders:<\/p>\n<ul>\n<li><span> <\/span><strong><span>Cookies<\/span><\/strong><\/li>\n<li><span> <\/span><strong><span>Login Data<\/span><\/strong><\/li>\n<li><span> <\/span><strong><span>Login Data For Account<\/span><\/strong><\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k29.png&#8221; title_text=&#8221;k29&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span>All of the above is copied into the aforementioned temporary directory, compressed and put into a ZIP file, to be used by the KamiKakaBot function <strong>&#8220;ok0djfnakf&#8221;<\/strong> described above.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k30.png&#8221; title_text=&#8221;k30&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><span>KamiKakaBot Variants &#8211; <\/span><span>New Vs Old<br \/><\/span><\/h1>\n<p><span>While there are some slight differences between the old and new variants of KamiKakaBot. Including different text file anchors, code obfuscation, and different special C2 commands. The major difference is mainly the decoupling of the stealer component to a standalone DLL from the main payload.<\/span><span><br \/><\/span><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><span lang=\"EN-GB\">Detection Opportunities<o:p><\/o:p><\/span><\/h1>\n<p><span>KamiKakaBot TTPs offer many detection opportunities that are easily detectable using public Sigma rules. For example, using our endpoint agent Aurora we can see many alerts triggering just for the first stage.<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k31.png&#8221; title_text=&#8221;k31&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/k32.png&#8221; title_text=&#8221;k32&#8243; _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>Indicators Of Compromise<\/h1>\n<p>You can find all IOCs and links to the latest version of the detection rules <a href=\"https:\/\/github.com\/NextronSystems\/iocs\/tree\/master\/reports\/dark_pink_kamikakabot\">here<\/a>.<\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1><strong>MITRE ATT&amp;CK<\/strong><\/h1>\n<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\">\n<tbody>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><strong>Tactics<\/strong><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\"><strong>Technique\/Sub-Technique<\/strong><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><strong>ID<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0009\">Collection<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\"><span>Archive Collected Data: Archive via Library<\/span><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1560\/002\/\">T1560.002<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 80px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0011\">Command and Control<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 80px;\"><span>Application Layer Protocol: Web Protocols<\/span><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1071\/001\/\">T1071.001<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0005\">Defense Evasion<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\">Deobfuscate\/Decode Files or Information<\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1140\/\">T1140<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0005\">Defense Evasion<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\"><span>Reflective Code Loading<\/span><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1620\/\">T1620<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0005\">Defense Evasion<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\">Hijack Execution Flow: DLL Side-Loading<\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1574\/002\/\">T1574.002<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 80px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0002\">Execution<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 80px;\">Command and Scripting Interpreter: Windows Command Shell<\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1059\/003\/\">T1059.003<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 80px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0002\">Execution<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 80px;\">Command and Scripting interpreter: <span>PowerShell<\/span><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1059\/001\/\">T1059.001<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0010\">Exfiltration<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\">Exfiltration Over C2 Channel<\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1041\/\">T1041<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 80px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0003\">Persistence<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 80px;\"><span>Boot or Logon Autostart Execution: Winlogon Helper DLL<\/span><\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 80px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1547\/004\/\">T1547.004<\/a><\/span><\/td>\n<\/tr>\n<tr style=\"height: 56px;\">\n<td width=\"129\" style=\"width: 22.3801%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/tactics\/TA0003\">Persistence<\/a><\/span><\/td>\n<td width=\"346\" style=\"width: 55.9503%; text-align: center; height: 56px;\">Scheduled Task\/Job: Scheduled Task<\/td>\n<td width=\"125\" style=\"width: 21.6696%; text-align: center; height: 56px;\"><span><a href=\"https:\/\/attack.mitre.org\/techniques\/T1053\/005\/\">T1053.005<\/a><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><\/h2>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<div class=\"et_pb_module et_pb_text et_pb_text_16  et_pb_text_align_left et_pb_bg_layout_light\">\n<div class=\"et_pb_text_inner\">\n<h1>Nextron\u2019s Solutions for Enhanced Cybersecurity<\/h1>\n<p>Nextron steps in where traditional security measures might miss threats. Our digital forensics tools conduct thorough analyses of systems that show signs of unusual behavior. They effectively identify risky software and expose a range of threats that could go unnoticed by standard methods.<\/p>\n<p>Our signature collection is tailored to detect a variety of security concerns. This includes hacker tools, their remnants, unusual user activities, hidden configuration settings, and legitimate software that might be misused for attacks. Our approach is especially useful in detecting the tactics used in supply chain attacks and identifying tools that evade Antivirus and EDR systems.<\/p>\n<\/div>\n<\/div>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.24.2&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1>Contributors<\/h1>\n<ul>\n<li><a href=\"https:\/\/twitter.com\/X__Junior\" target=\"_blank\" rel=\"noopener\">Mohamed Ashraf<\/a><\/li>\n<li><a href=\"https:\/\/twitter.com\/nas_bench\/\">Nasreddine Bencherchali<\/a><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in January 2023 Group-IB first reported and documented the TTPs of DarkPink, an APT group that targets the Asia-Pacific regions. We\u2019ve been monitoring KamiKakaBot samples since September of last year. And at the start of this year in January we\u2019ve noticed 2 new samples being uploaded to Virustotal.These 2 new samples have had a very low detection rate. Which led us to investigate them a bit closer. \u00a0The following is a full writeup on the newer variants KamiKakaBot samples from the initial lure to full persistence on disk and credential stealer component. Johann Aydinbas was the first to spot this and mention it on twitter. Kudos to him. Start Of The Infection As discussed in the original Group-IB research blog, DarkPink APT uses ISO files as a phishing mechanism. And this case is not much different in terms of structure.The ISO in question is named \u201cProposed Concept Note on the AOIP-based Comprehensive Regional Architecture.iso\u201d and contains the following. Name Description ID SOM LETTER ON CONCEPT NOTE ON THE AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE.PDF Lure document that is never used by the malware CN AOIP-BASED COMPREHENSIVE REGIONAL ARCHITECTURE (1).DOCX.EXE Legitimate WinWord.EXE binary masqueraded as a double extension file to incentivise the [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":21578,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[749,1,760],"tags":[],"class_list":["post-21483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-homepage","category-nextron","category-recommended"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unveiling KamiKakaBot - Malware Analysis - Nextron Systems<\/title>\n<meta name=\"description\" content=\"We\u2019ve been monitoring KamiKakaBot samples since 09\/2023. And at the start of 2024 we\u2019ve noticed 2 new samples being uploaded to Virustotal.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\"},\"author\":{\"name\":\"Nextron Threat Research Team\",\"@id\":\"https:\/\/www.nextron-systems.com\/#\/schema\/person\/c85023b02fb7500513bb7464c4d36a96\"},\"headline\":\"Unveiling KamiKakaBot &#8211; Malware Analysis\",\"datePublished\":\"2024-03-22T15:25:02+00:00\",\"dateModified\":\"2024-10-11T14:04:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\"},\"wordCount\":3797,\"publisher\":{\"@id\":\"https:\/\/www.nextron-systems.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg\",\"articleSection\":[\"Homepage\",\"Nextron\",\"Recommended\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\",\"url\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\",\"name\":\"Unveiling KamiKakaBot - Malware Analysis - Nextron Systems\",\"isPartOf\":{\"@id\":\"https:\/\/www.nextron-systems.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg\",\"datePublished\":\"2024-03-22T15:25:02+00:00\",\"dateModified\":\"2024-10-11T14:04:26+00:00\",\"description\":\"We\u2019ve been monitoring KamiKakaBot samples since 09\/2023. And at the start of 2024 we\u2019ve noticed 2 new samples being uploaded to Virustotal.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage\",\"url\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg\",\"contentUrl\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg\",\"width\":1536,\"height\":768},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nextron-systems.com\/#website\",\"url\":\"https:\/\/www.nextron-systems.com\/\",\"name\":\"Nextron Systems\",\"description\":\"We Detect Hackers\",\"publisher\":{\"@id\":\"https:\/\/www.nextron-systems.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nextron-systems.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nextron-systems.com\/#organization\",\"name\":\"Nextron Systems GmbH\",\"url\":\"https:\/\/www.nextron-systems.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.nextron-systems.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2017\/11\/Nextron_0.2s_inv_symbol_only.png\",\"contentUrl\":\"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2017\/11\/Nextron_0.2s_inv_symbol_only.png\",\"width\":260,\"height\":260,\"caption\":\"Nextron Systems GmbH\"},\"image\":{\"@id\":\"https:\/\/www.nextron-systems.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nextron-systems.com\/#\/schema\/person\/c85023b02fb7500513bb7464c4d36a96\",\"name\":\"Nextron Threat Research Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.nextron-systems.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/93ef820b74086420190263e5fff9169f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/93ef820b74086420190263e5fff9169f?s=96&d=mm&r=g\",\"caption\":\"Nextron Threat Research Team\"},\"url\":\"https:\/\/www.nextron-systems.com\/author\/threat_research\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unveiling KamiKakaBot - Malware Analysis - Nextron Systems","description":"We\u2019ve been monitoring KamiKakaBot samples since 09\/2023. And at the start of 2024 we\u2019ve noticed 2 new samples being uploaded to Virustotal.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#article","isPartOf":{"@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/"},"author":{"name":"Nextron Threat Research Team","@id":"https:\/\/www.nextron-systems.com\/#\/schema\/person\/c85023b02fb7500513bb7464c4d36a96"},"headline":"Unveiling KamiKakaBot &#8211; Malware Analysis","datePublished":"2024-03-22T15:25:02+00:00","dateModified":"2024-10-11T14:04:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/"},"wordCount":3797,"publisher":{"@id":"https:\/\/www.nextron-systems.com\/#organization"},"image":{"@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg","articleSection":["Homepage","Nextron","Recommended"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/","url":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/","name":"Unveiling KamiKakaBot - Malware Analysis - Nextron Systems","isPartOf":{"@id":"https:\/\/www.nextron-systems.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage"},"image":{"@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg","datePublished":"2024-03-22T15:25:02+00:00","dateModified":"2024-10-11T14:04:26+00:00","description":"We\u2019ve been monitoring KamiKakaBot samples since 09\/2023. And at the start of 2024 we\u2019ve noticed 2 new samples being uploaded to Virustotal.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.nextron-systems.com\/2024\/03\/22\/unveiling-kamikakabot-malware-analysis\/#primaryimage","url":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg","contentUrl":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2024\/03\/a_malicious_robot_threatening_an_Asian_city_dark_pink__e1056225-12e0-4993-9b60-bd3913cb89f4.jpg","width":1536,"height":768},{"@type":"WebSite","@id":"https:\/\/www.nextron-systems.com\/#website","url":"https:\/\/www.nextron-systems.com\/","name":"Nextron Systems","description":"We Detect Hackers","publisher":{"@id":"https:\/\/www.nextron-systems.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nextron-systems.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.nextron-systems.com\/#organization","name":"Nextron Systems GmbH","url":"https:\/\/www.nextron-systems.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.nextron-systems.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2017\/11\/Nextron_0.2s_inv_symbol_only.png","contentUrl":"https:\/\/www.nextron-systems.com\/wp-content\/uploads\/2017\/11\/Nextron_0.2s_inv_symbol_only.png","width":260,"height":260,"caption":"Nextron Systems GmbH"},"image":{"@id":"https:\/\/www.nextron-systems.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nextron-systems.com\/#\/schema\/person\/c85023b02fb7500513bb7464c4d36a96","name":"Nextron Threat Research Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.nextron-systems.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/93ef820b74086420190263e5fff9169f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/93ef820b74086420190263e5fff9169f?s=96&d=mm&r=g","caption":"Nextron Threat Research Team"},"url":"https:\/\/www.nextron-systems.com\/author\/threat_research\/"}]}},"_links":{"self":[{"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/posts\/21483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/comments?post=21483"}],"version-history":[{"count":13,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/posts\/21483\/revisions"}],"predecessor-version":[{"id":21627,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/posts\/21483\/revisions\/21627"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/media\/21578"}],"wp:attachment":[{"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/media?parent=21483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/categories?post=21483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nextron-systems.com\/wp-json\/wp\/v2\/tags?post=21483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}