Skip to content
Permalink
Browse files

Covenant v0.2

  • Loading branch information...
cobbr committed May 1, 2019
2 parents acc1d99 + c11bcc9 commit a2df643e01aea3ad7330bdba88ddd560692e46b4
Showing with 7,376 additions and 3,165 deletions.
  1. +15 −0 .gitmodules
  2. +29 −3 CHANGELOG.md
  3. +1,671 −296 Covenant/API/CovenantAPI.cs
  4. +359 −85 Covenant/API/CovenantAPIExtensions.cs
  5. +132 −28 Covenant/API/ICovenantAPI.cs
  6. +43 −10 Covenant/API/Models/BinaryLauncher.cs
  7. +56 −0 Covenant/API/Models/CommunicationType.cs
  8. +43 −10 Covenant/API/Models/CscriptLauncher.cs
  9. +10 −4 Covenant/API/Models/DownloadEvent.cs
  10. +10 −4 Covenant/API/Models/EventModel.cs
  11. +79 −13 Covenant/API/Models/Grunt.cs
  12. +7 −1 Covenant/API/Models/GruntStatus.cs
  13. +27 −9 Covenant/API/Models/GruntTask.cs
  14. +6 −18 Covenant/API/Models/GruntTaskOption.cs
  15. +49 −32 Covenant/API/Models/GruntTasking.cs
  16. +13 −4 Covenant/API/Models/GruntTaskingMessage.cs
  17. +37 −7 Covenant/API/Models/GruntTaskingType.cs
  18. +13 −7 Covenant/API/Models/HTTPListener.cs
  19. +43 −10 Covenant/API/Models/InstallUtilLauncher.cs
  20. +43 −10 Covenant/API/Models/Launcher.cs
  21. +13 −7 Covenant/API/Models/Listener.cs
  22. +43 −10 Covenant/API/Models/MSBuildLauncher.cs
  23. +43 −10 Covenant/API/Models/MshtaLauncher.cs
  24. +43 −10 Covenant/API/Models/PowerShellLauncher.cs
  25. +43 −10 Covenant/API/Models/Regsvr32Launcher.cs
  26. +43 −10 Covenant/API/Models/WmicLauncher.cs
  27. +43 −10 Covenant/API/Models/WscriptLauncher.cs
  28. +1 −1 Covenant/API/openapi.json
  29. +358 −0 Covenant/Controllers/CovenantUserApiController.cs
  30. +0 −228 Covenant/Controllers/CovenantUserController.cs
  31. +39 −39 Covenant/Controllers/{CredentialController.cs → CredentialApiController.cs}
  32. +18 −27 Covenant/Controllers/{EventController.cs → EventApiController.cs}
  33. +268 −0 Covenant/Controllers/GruntApiController.cs
  34. +0 −182 Covenant/Controllers/GruntController.cs
  35. +140 −0 Covenant/Controllers/GruntTaskApiController.cs
  36. +0 −140 Covenant/Controllers/GruntTaskController.cs
  37. +626 −0 Covenant/Controllers/GruntTaskingApiController.cs
  38. +0 −289 Covenant/Controllers/GruntTaskingController.cs
  39. +271 −192 Covenant/Controllers/HttpListenerController.cs
  40. +30 −15 Covenant/Controllers/{IndicatorsController.cs → IndicatorApiController.cs}
  41. +272 −138 Covenant/Controllers/{LauncherController.cs → LauncherApiController.cs}
  42. +118 −64 Covenant/Controllers/{ListenerController.cs → ListenerApiController.cs}
  43. +15 −17 Covenant/Controllers/{ProfileController.cs → ProfileApiController.cs}
  44. +2 −1 Covenant/Core/Compiler.cs
  45. +301 −258 Covenant/{Data → Core}/DbInitializer.cs
  46. +9 −42 Covenant/Core/Encryption.cs
  47. +18 −4 Covenant/Covenant.cs
  48. +23 −4 Covenant/Covenant.csproj
  49. +620 −200 Covenant/Data/Grunt/Grunt.cs
  50. +171 −56 Covenant/Data/Grunt/GruntStager.cs
  51. BIN Covenant/Data/References/net35/System.ServiceProcess.dll
  52. BIN Covenant/Data/References/net35/System.Web.Extensions.dll
  53. BIN Covenant/Data/References/net40/System.ServiceProcess.dll
  54. BIN Covenant/Data/References/net40/System.Web.Extensions.dll
  55. BIN Covenant/Data/References/net40/System.XML.dll
  56. BIN Covenant/Data/Resources/SharpSploit.Resources.powerkatz_x64.dll
  57. BIN Covenant/Data/Resources/SharpSploit.Resources.powerkatz_x86.dll
  58. +23 −19 Covenant/Data/Tasks/Assembly.task
  59. +25 −20 Covenant/Data/Tasks/AssemblyReflect.task
  60. +11 −12 Covenant/Data/Tasks/BypassUAC.task
  61. +9 −4 Covenant/Data/Tasks/ChangeDirectory.task
  62. +16 −12 Covenant/Data/Tasks/DCOM.task
  63. +6 −2 Covenant/Data/Tasks/Download.task
  64. +19 −15 Covenant/Data/Tasks/GetDomainComputer.task
  65. +19 −15 Covenant/Data/Tasks/GetDomainGroup.task
  66. +19 −15 Covenant/Data/Tasks/GetDomainUser.task
  67. +12 −8 Covenant/Data/Tasks/GetNetLocalGroup.task
  68. +12 −8 Covenant/Data/Tasks/GetNetLocalGroupMember.task
  69. +12 −8 Covenant/Data/Tasks/GetNetLoggedOnUser.task
  70. +12 −8 Covenant/Data/Tasks/GetNetSession.task
  71. +15 −0 Covenant/Data/Tasks/GetRegistryKey.task
  72. +15 −0 Covenant/Data/Tasks/GetRemoteRegistryKey.task
  73. +11 −7 Covenant/Data/Tasks/GetSystem.task
  74. +12 −8 Covenant/Data/Tasks/ImpersonateProcess.task
  75. +11 −7 Covenant/Data/Tasks/ImpersonateUser.task
  76. +19 −15 Covenant/Data/Tasks/Kerberoast.task
  77. +6 −2 Covenant/Data/Tasks/ListDirectory.task
  78. +21 −17 Covenant/Data/Tasks/MakeToken.task
  79. +5 −1 Covenant/Data/Tasks/Mimikatz.task
  80. +9 −5 Covenant/Data/Tasks/PortScan.task
  81. +5 −1 Covenant/Data/Tasks/PowerShell.task
  82. +5 −1 Covenant/Data/Tasks/ProcessList.task
  83. +0 −11 Covenant/Data/Tasks/RegistryRead.task
  84. +0 −11 Covenant/Data/Tasks/RegistryWrite.task
  85. +11 −7 Covenant/Data/Tasks/RevertToSelf.task
  86. +41 −38 Covenant/Data/Tasks/Rubeus.task
  87. +25 −0 Covenant/Data/Tasks/SafetyKatz.task
  88. +35 −0 Covenant/Data/Tasks/Seatbelt.task
  89. +22 −0 Covenant/Data/Tasks/SetRegistryKey.task
  90. +22 −0 Covenant/Data/Tasks/SetRemoteRegistryKey.task
  91. +51 −0 Covenant/Data/Tasks/SharpDPAPI.task
  92. +65 −0 Covenant/Data/Tasks/SharpDump.task
  93. +44 −0 Covenant/Data/Tasks/SharpUp.task
  94. +35 −0 Covenant/Data/Tasks/SharpWMI.task
  95. +5 −1 Covenant/Data/Tasks/Shell.task
  96. +15 −0 Covenant/Data/Tasks/ShellCmd.task
  97. +16 −12 Covenant/Data/Tasks/ShellCode.task
  98. +7 −3 Covenant/Data/Tasks/Upload.task
  99. +10 −6 Covenant/Data/Tasks/WMI.task
  100. +4 −4 Covenant/Data/Tasks/WhoAmI.task
  101. +1 −0 Covenant/Data/Tasks/src/Seatbelt
  102. +1 −0 Covenant/Data/Tasks/src/SharpDPAPI
  103. +1 −0 Covenant/Data/Tasks/src/SharpDump
  104. +1 −0 Covenant/Data/Tasks/src/SharpUp
  105. +1 −0 Covenant/Data/Tasks/src/SharpWMI
  106. +2 −3 Covenant/Dockerfile
  107. +99 −137 Covenant/Models/Covenant/CapturedCredential.cs
  108. +0 −18 Covenant/Models/Covenant/CovenantAPIConnectionDetails.cs
  109. +27 −3 Covenant/Models/Covenant/Event.cs
  110. +32 −2 Covenant/Models/CovenantContext.cs
  111. +98 −29 Covenant/Models/Grunts/Grunt.cs
  112. +9 −43 Covenant/Models/Grunts/GruntTask.cs
  113. +63 −80 Covenant/Models/Grunts/GruntTasking.cs
  114. +1 −1 Covenant/Models/Launchers/InstallUtilLauncher.cs
  115. +12 −3 Covenant/Models/Launchers/Launcher.cs
  116. +1 −1 Covenant/Models/Launchers/MSBuildLauncher.cs
  117. +1 −1 Covenant/Models/Launchers/PowerShellLauncher.cs
  118. +12 −8 Covenant/Models/Listeners/HttpListener.cs
  119. +5 −3 Covenant/Models/Listeners/Listener.cs
  120. +16 −15 README.md
@@ -4,3 +4,18 @@
[submodule "Covenant/Data/Tasks/src/SharpSploit"]
path = Covenant/Data/Tasks/src/SharpSploit
url = https://github.com/cobbr/SharpSploit
[submodule "Covenant/Data/Tasks/src/SharpDPAPI"]
path = Covenant/Data/Tasks/src/SharpDPAPI
url = https://github.com/GhostPack/SharpDPAPI
[submodule "Covenant/Data/Tasks/src/SharpUp"]
path = Covenant/Data/Tasks/src/SharpUp
url = https://github.com/GhostPack/SharpUp
[submodule "Covenant/Data/Tasks/src/Seatbelt"]
path = Covenant/Data/Tasks/src/Seatbelt
url = https://github.com/GhostPack/Seatbelt
[submodule "Covenant/Data/Tasks/src/SharpDump"]
path = Covenant/Data/Tasks/src/SharpDump
url = https://github.com/GhostPack/SharpDump
[submodule "Covenant/Data/Tasks/src/SharpWMI"]
path = Covenant/Data/Tasks/src/SharpWMI
url = https://github.com/GhostPack/SharpWMI
@@ -4,10 +4,35 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased
## [v0.2] - 2019-05-01
### Added
- Added p2p communications over SMB named pipes
- Added TaskingUser and TaskingCommand to GruntTaskings
- Added Elite display events on user tasking (prior to completed)
- Added better Elite error messages
- Added forked version of ReadLine, with better tab-complete
- Added change user password
- Added shellcmd task
- Added sharpdpapi task
- Added sharpup task
- Added sharpdump task
- Added sharpwmi task
- Added safetykatz task
- Added Seatbelt task
- Added remote registry tasks
- Added KillDate to launchers and grunts

### Changed
- Moved Eventing from Listeners/Elite to Covenant Controllers
- AdminPassword no longer encrypts certificate file, can be changed
- TaskMenu now displays full task description, detailed parameter info
- Updated SharpSploit code
- Tasks now catch Exceptions, return better error messages

### Fixed
- Fixed docker check for git submodules
- Fixed GetSystem missing reference source library
- Fixed RegistryWrite Task
- Fixed Create user error message
- Fixed ssl certificate password error, no longer need to use CovenantDev

## [v0.1.3] - 2019-03-18
### Added
@@ -58,3 +83,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[v0.1.1]: https://github.com/cobbr/Covenant/compare/v0.1...v0.1.1
[v0.1.2]: https://github.com/cobbr/Covenant/compare/v0.1.1...v0.1.2
[v0.1.3]: https://github.com/cobbr/Covenant/compare/v0.1.2...v0.1.3
[v0.2]: https://github.com/cobbr/Covenant/compare/v0.1.3...v0.2

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -27,18 +27,25 @@ public BinaryLauncher()
/// <param name="type">Possible values include: 'Wmic', 'Regsvr32',
/// 'Mshta', 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
/// 'InstallUtil'</param>
public BinaryLauncher(int? id = default(int?), int? listenerId = default(int?), DotNetVersion? dotNetFrameworkVersion = default(DotNetVersion?), string launcherString = default(string), LauncherType? type = default(LauncherType?), string name = default(string), string description = default(string), int? delay = default(int?), int? jitter = default(int?), int? connectAttempts = default(int?), string stagerCode = default(string), string base64ILByteString = default(string))
/// <param name="commType">Possible values include: 'HTTP',
/// 'SMB'</param>
public BinaryLauncher(int? id = default(int?), int? listenerId = default(int?), DotNetVersion? dotNetFrameworkVersion = default(DotNetVersion?), LauncherType? type = default(LauncherType?), string name = default(string), string description = default(string), CommunicationType? commType = default(CommunicationType?), bool? validateCert = default(bool?), bool? useCertPinning = default(bool?), string smbPipeName = default(string), int? delay = default(int?), int? jitterPercent = default(int?), int? connectAttempts = default(int?), System.DateTime? killDate = default(System.DateTime?), string launcherString = default(string), string stagerCode = default(string), string base64ILByteString = default(string))
{
Id = id;
ListenerId = listenerId;
DotNetFrameworkVersion = dotNetFrameworkVersion;
LauncherString = launcherString;
Type = type;
Name = name;
Description = description;
CommType = commType;
ValidateCert = validateCert;
UseCertPinning = useCertPinning;
SmbPipeName = smbPipeName;
Delay = delay;
Jitter = jitter;
JitterPercent = jitterPercent;
ConnectAttempts = connectAttempts;
KillDate = killDate;
LauncherString = launcherString;
StagerCode = stagerCode;
Base64ILByteString = base64ILByteString;
CustomInit();
@@ -65,11 +72,6 @@ public BinaryLauncher(int? id = default(int?), int? listenerId = default(int?),
[JsonProperty(PropertyName = "dotNetFrameworkVersion")]
public DotNetVersion? DotNetFrameworkVersion { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "launcherString")]
public string LauncherString { get; set; }

/// <summary>
/// Gets or sets possible values include: 'Wmic', 'Regsvr32', 'Mshta',
/// 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
@@ -88,21 +90,52 @@ public BinaryLauncher(int? id = default(int?), int? listenerId = default(int?),
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }

/// <summary>
/// Gets or sets possible values include: 'HTTP', 'SMB'
/// </summary>
[JsonProperty(PropertyName = "commType")]
public CommunicationType? CommType { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "validateCert")]
public bool? ValidateCert { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "useCertPinning")]
public bool? UseCertPinning { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "smbPipeName")]
public string SmbPipeName { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "delay")]
public int? Delay { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "jitter")]
public int? Jitter { get; set; }
[JsonProperty(PropertyName = "jitterPercent")]
public int? JitterPercent { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "connectAttempts")]
public int? ConnectAttempts { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "killDate")]
public System.DateTime? KillDate { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "launcherString")]
public string LauncherString { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "stagerCode")]
@@ -0,0 +1,56 @@
// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace Covenant.API.Models
{
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.Runtime;
using System.Runtime.Serialization;

/// <summary>
/// Defines values for CommunicationType.
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public enum CommunicationType
{
[EnumMember(Value = "HTTP")]
HTTP,
[EnumMember(Value = "SMB")]
SMB
}
internal static class CommunicationTypeEnumExtension
{
internal static string ToSerializedValue(this CommunicationType? value)
{
return value == null ? null : ((CommunicationType)value).ToSerializedValue();
}

internal static string ToSerializedValue(this CommunicationType value)
{
switch( value )
{
case CommunicationType.HTTP:
return "HTTP";
case CommunicationType.SMB:
return "SMB";
}
return null;
}

internal static CommunicationType? ParseCommunicationType(this string value)
{
switch( value )
{
case "HTTP":
return CommunicationType.HTTP;
case "SMB":
return CommunicationType.SMB;
}
return null;
}
}
}
@@ -29,21 +29,28 @@ public CscriptLauncher()
/// <param name="type">Possible values include: 'Wmic', 'Regsvr32',
/// 'Mshta', 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
/// 'InstallUtil'</param>
public CscriptLauncher(ScriptingLanguage? scriptLanguage = default(ScriptingLanguage?), string progId = default(string), string diskCode = default(string), int? id = default(int?), int? listenerId = default(int?), DotNetVersion? dotNetFrameworkVersion = default(DotNetVersion?), string launcherString = default(string), LauncherType? type = default(LauncherType?), string name = default(string), string description = default(string), int? delay = default(int?), int? jitter = default(int?), int? connectAttempts = default(int?), string stagerCode = default(string), string base64ILByteString = default(string))
/// <param name="commType">Possible values include: 'HTTP',
/// 'SMB'</param>
public CscriptLauncher(ScriptingLanguage? scriptLanguage = default(ScriptingLanguage?), string progId = default(string), string diskCode = default(string), int? id = default(int?), int? listenerId = default(int?), DotNetVersion? dotNetFrameworkVersion = default(DotNetVersion?), LauncherType? type = default(LauncherType?), string name = default(string), string description = default(string), CommunicationType? commType = default(CommunicationType?), bool? validateCert = default(bool?), bool? useCertPinning = default(bool?), string smbPipeName = default(string), int? delay = default(int?), int? jitterPercent = default(int?), int? connectAttempts = default(int?), System.DateTime? killDate = default(System.DateTime?), string launcherString = default(string), string stagerCode = default(string), string base64ILByteString = default(string))
{
ScriptLanguage = scriptLanguage;
ProgId = progId;
DiskCode = diskCode;
Id = id;
ListenerId = listenerId;
DotNetFrameworkVersion = dotNetFrameworkVersion;
LauncherString = launcherString;
Type = type;
Name = name;
Description = description;
CommType = commType;
ValidateCert = validateCert;
UseCertPinning = useCertPinning;
SmbPipeName = smbPipeName;
Delay = delay;
Jitter = jitter;
JitterPercent = jitterPercent;
ConnectAttempts = connectAttempts;
KillDate = killDate;
LauncherString = launcherString;
StagerCode = stagerCode;
Base64ILByteString = base64ILByteString;
CustomInit();
@@ -86,11 +93,6 @@ public CscriptLauncher(ScriptingLanguage? scriptLanguage = default(ScriptingLang
[JsonProperty(PropertyName = "dotNetFrameworkVersion")]
public DotNetVersion? DotNetFrameworkVersion { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "launcherString")]
public string LauncherString { get; set; }

/// <summary>
/// Gets or sets possible values include: 'Wmic', 'Regsvr32', 'Mshta',
/// 'Cscript', 'Wscript', 'PowerShell', 'Binary', 'MSBuild',
@@ -109,21 +111,52 @@ public CscriptLauncher(ScriptingLanguage? scriptLanguage = default(ScriptingLang
[JsonProperty(PropertyName = "description")]
public string Description { get; set; }

/// <summary>
/// Gets or sets possible values include: 'HTTP', 'SMB'
/// </summary>
[JsonProperty(PropertyName = "commType")]
public CommunicationType? CommType { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "validateCert")]
public bool? ValidateCert { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "useCertPinning")]
public bool? UseCertPinning { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "smbPipeName")]
public string SmbPipeName { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "delay")]
public int? Delay { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "jitter")]
public int? Jitter { get; set; }
[JsonProperty(PropertyName = "jitterPercent")]
public int? JitterPercent { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "connectAttempts")]
public int? ConnectAttempts { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "killDate")]
public System.DateTime? KillDate { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "launcherString")]
public string LauncherString { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "stagerCode")]
@@ -28,14 +28,15 @@ public DownloadEvent()
/// 'Warning', 'Highlight', 'Error'</param>
/// <param name="type">Possible values include: 'Normal',
/// 'Download'</param>
public DownloadEvent(string fileName = default(string), string fileContents = default(string), DownloadProgress? progress = default(DownloadProgress?), int? id = default(int?), System.DateTime? time = default(System.DateTime?), string message = default(string), EventLevel? level = default(EventLevel?), EventType? type = default(EventType?), string context = default(string))
public DownloadEvent(string fileName = default(string), string fileContents = default(string), DownloadProgress? progress = default(DownloadProgress?), int? id = default(int?), System.DateTime? time = default(System.DateTime?), string messageHeader = default(string), string messageBody = default(string), EventLevel? level = default(EventLevel?), EventType? type = default(EventType?), string context = default(string))
{
FileName = fileName;
FileContents = fileContents;
Progress = progress;
Id = id;
Time = time;
Message = message;
MessageHeader = messageHeader;
MessageBody = messageBody;
Level = level;
Type = type;
Context = context;
@@ -75,8 +76,13 @@ public DownloadEvent(string fileName = default(string), string fileContents = de

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "message")]
public string Message { get; set; }
[JsonProperty(PropertyName = "messageHeader")]
public string MessageHeader { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "messageBody")]
public string MessageBody { get; set; }

/// <summary>
/// Gets or sets possible values include: 'Silent', 'Info', 'Warning',
@@ -26,11 +26,12 @@ public EventModel()
/// 'Warning', 'Highlight', 'Error'</param>
/// <param name="type">Possible values include: 'Normal',
/// 'Download'</param>
public EventModel(int? id = default(int?), System.DateTime? time = default(System.DateTime?), string message = default(string), EventLevel? level = default(EventLevel?), EventType? type = default(EventType?), string context = default(string))
public EventModel(int? id = default(int?), System.DateTime? time = default(System.DateTime?), string messageHeader = default(string), string messageBody = default(string), EventLevel? level = default(EventLevel?), EventType? type = default(EventType?), string context = default(string))
{
Id = id;
Time = time;
Message = message;
MessageHeader = messageHeader;
MessageBody = messageBody;
Level = level;
Type = type;
Context = context;
@@ -54,8 +55,13 @@ public EventModel(int? id = default(int?), System.DateTime? time = default(Syste

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "message")]
public string Message { get; set; }
[JsonProperty(PropertyName = "messageHeader")]
public string MessageHeader { get; set; }

/// <summary>
/// </summary>
[JsonProperty(PropertyName = "messageBody")]
public string MessageBody { get; set; }

/// <summary>
/// Gets or sets possible values include: 'Silent', 'Info', 'Warning',

0 comments on commit a2df643

Please sign in to comment.
You can’t perform that action at this time.