@@ -24,7 +24,9 @@ const std::string PrivilegeMsgTag = "PR";
2424const std::string OsMsgTag = " OS" ;
2525const std::string LastProofOfLifeMsgTag = " POF" ;
2626const std::string SessionsMsgTag = " SS" ;
27-
27+ const std::string InternalIpsMsgTag = " IIPS" ;
28+ const std::string ProcessIdMsgTag = " PID" ;
29+ const std::string AdditionalInfoMsgTag = " ADI" ;
2830
2931
3032//
@@ -345,6 +347,18 @@ class BundleC2Message
345347 if (it != bundleC2MessageJson.end ())
346348 m_lastProofOfLife = bundleC2MessageJson[LastProofOfLifeMsgTag].get <std::string>();
347349
350+ it = bundleC2MessageJson.find (InternalIpsMsgTag);
351+ if (it != bundleC2MessageJson.end ())
352+ m_internalIps = bundleC2MessageJson[InternalIpsMsgTag].get <std::string>();
353+
354+ it = bundleC2MessageJson.find (ProcessIdMsgTag);
355+ if (it != bundleC2MessageJson.end ())
356+ m_processId = bundleC2MessageJson[ProcessIdMsgTag].get <std::string>();
357+
358+ it = bundleC2MessageJson.find (AdditionalInfoMsgTag);
359+ if (it != bundleC2MessageJson.end ())
360+ m_additionalInformation = bundleC2MessageJson[AdditionalInfoMsgTag].get <std::string>();
361+
348362 auto sessions = bundleC2MessageJson[SessionsMsgTag];
349363
350364 for (nlohmann::json::iterator it = sessions.begin (); it != sessions.end (); ++it)
@@ -396,9 +410,16 @@ class BundleC2Message
396410 bundleC2MessageJson += nlohmann::json::object_t::value_type (OsMsgTag, m_os);
397411 if (!m_lastProofOfLife.empty ())
398412 bundleC2MessageJson += nlohmann::json::object_t::value_type (LastProofOfLifeMsgTag, m_lastProofOfLife);
413+ if (!m_internalIps.empty ())
414+ bundleC2MessageJson += nlohmann::json::object_t::value_type (InternalIpsMsgTag, m_internalIps);
415+ if (!m_processId.empty ())
416+ bundleC2MessageJson += nlohmann::json::object_t::value_type (ProcessIdMsgTag, m_processId);
417+ if (!m_additionalInformation.empty ())
418+ bundleC2MessageJson += nlohmann::json::object_t::value_type (AdditionalInfoMsgTag, m_additionalInformation);
399419 if (!sessions.empty ())
400420 bundleC2MessageJson += nlohmann::json::object_t::value_type (SessionsMsgTag, sessions);
401421
422+
402423 *output = bundleC2MessageJson.dump ();
403424 }
404425
@@ -455,18 +476,30 @@ class BundleC2Message
455476 {
456477 return m_arch;
457478 }
458- const std::string& privilege () const
479+ const std::string& privilege () const
459480 {
460481 return m_privilege;
461482 }
462- const std::string& os () const
483+ const std::string& os () const
463484 {
464485 return m_os;
465486 }
466- const std::string& lastProofOfLife () const
487+ const std::string& lastProofOfLife () const
467488 {
468489 return m_lastProofOfLife;
469490 }
491+ const std::string& internalIps () const
492+ {
493+ return m_internalIps;
494+ }
495+ const std::string& processId () const
496+ {
497+ return m_processId;
498+ }
499+ const std::string& additionalInformation () const
500+ {
501+ return m_additionalInformation;
502+ }
470503
471504 void set_beaconhash (const std::string& beaconHash)
472505 {
@@ -500,7 +533,20 @@ class BundleC2Message
500533 {
501534 m_lastProofOfLife = lastProofOfLife;
502535 }
536+ void set_internalIps (const std::string& internalIps)
537+ {
538+ m_internalIps = internalIps;
539+ }
540+ void set_processId (const std::string& pid)
541+ {
542+ m_processId = pid;
543+ }
544+ void set_additionalInformation (const std::string& info)
545+ {
546+ m_additionalInformation = info;
547+ }
503548
549+
504550private:
505551 std::vector<std::unique_ptr<C2Message>> m_c2Messages;
506552
@@ -512,6 +558,9 @@ class BundleC2Message
512558 std::string m_privilege;
513559 std::string m_os;
514560 std::string m_lastProofOfLife;
561+ std::string m_internalIps;
562+ std::string m_processId;
563+ std::string m_additionalInformation;
515564};
516565
517566
0 commit comments