Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add credential manager, Grunts use CookieContainer, updated rubeus, d…
…ownload fixed
  • Loading branch information
cobbr committed Mar 3, 2019
1 parent 48881bc commit d0f89b3
Show file tree
Hide file tree
Showing 26 changed files with 3,676 additions and 40 deletions.
11 changes: 9 additions & 2 deletions CHANGELOG.md
Expand Up @@ -4,12 +4,18 @@ 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.1.3] - 2019-03-03
### Added
- Added Credential Manager and mimikatz/rubeus parser

### Changed
- Updated Rubeus to latest commit
- Changed Grunts to use CookieContainer WebClient for Cookie authentication

### Fixed
- Re-added missing appsettings.json
- Re-added missing appsettings.json, moved to Data folder
- Check for initialized submodules
- Fixed download task (missing folder)

## [v0.1.2] - 2019-02-14
### Added
Expand Down Expand Up @@ -42,3 +48,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
1,898 changes: 1,898 additions & 0 deletions Covenant/API/CovenantAPI.cs

Large diffs are not rendered by default.

371 changes: 371 additions & 0 deletions Covenant/API/CovenantAPIExtensions.cs

Large diffs are not rendered by default.

142 changes: 142 additions & 0 deletions Covenant/API/ICovenantAPI.cs
Expand Up @@ -170,6 +170,148 @@ public partial interface ICovenantAPI : System.IDisposable
/// </param>
Task<HttpOperationResponse<IdentityRole>> ApiRolesByRidGetWithHttpMessagesAsync(string rid, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<IList<CapturedCredential>>> ApiCredentialsGetWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<IList<CapturedPasswordCredential>>> ApiCredentialsPasswordsGetWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='passwordCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedPasswordCredential>> ApiCredentialsPasswordsPutWithHttpMessagesAsync(CapturedPasswordCredential passwordCredential = default(CapturedPasswordCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='passwordCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedPasswordCredential>> ApiCredentialsPasswordsPostWithHttpMessagesAsync(CapturedPasswordCredential passwordCredential = default(CapturedPasswordCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<IList<CapturedHashCredential>>> ApiCredentialsHashesGetWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='hashCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedHashCredential>> ApiCredentialsHashesPutWithHttpMessagesAsync(CapturedHashCredential hashCredential = default(CapturedHashCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='hashCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedHashCredential>> ApiCredentialsHashesPostWithHttpMessagesAsync(CapturedHashCredential hashCredential = default(CapturedHashCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<IList<CapturedTicketCredential>>> ApiCredentialsTicketsGetWithHttpMessagesAsync(Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='ticketCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedTicketCredential>> ApiCredentialsTicketsPutWithHttpMessagesAsync(CapturedTicketCredential ticketCredential = default(CapturedTicketCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='ticketCredential'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedTicketCredential>> ApiCredentialsTicketsPostWithHttpMessagesAsync(CapturedTicketCredential ticketCredential = default(CapturedTicketCredential), Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='id'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedCredential>> ApiCredentialsByIdGetWithHttpMessagesAsync(int id, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='id'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse> ApiCredentialsByIdDeleteWithHttpMessagesAsync(int id, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='id'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedPasswordCredential>> ApiCredentialsPasswordsByIdGetWithHttpMessagesAsync(int id, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='id'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedHashCredential>> ApiCredentialsHashesByIdGetWithHttpMessagesAsync(int id, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='id'>
/// </param>
/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
/// <param name='cancellationToken'>
/// The cancellation token.
/// </param>
Task<HttpOperationResponse<CapturedTicketCredential>> ApiCredentialsTicketsByIdGetWithHttpMessagesAsync(int id, Dictionary<string, List<string>> customHeaders = null, CancellationToken cancellationToken = default(CancellationToken));

/// <param name='customHeaders'>
/// The headers that will be added to request.
/// </param>
Expand Down
69 changes: 69 additions & 0 deletions Covenant/API/Models/CapturedCredential.cs
@@ -0,0 +1,69 @@
// <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 System.Linq;

public partial class CapturedCredential
{
/// <summary>
/// Initializes a new instance of the CapturedCredential class.
/// </summary>
public CapturedCredential()
{
CustomInit();
}

/// <summary>
/// Initializes a new instance of the CapturedCredential class.
/// </summary>
/// <param name="type">Possible values include: 'Password', 'Hash',
/// 'Ticket'</param>
public CapturedCredential(int? id = default(int?), string domain = default(string), string username = default(string), string serviceName = default(string), CredentialType? type = default(CredentialType?))
{
Id = id;
Domain = domain;
Username = username;
ServiceName = serviceName;
Type = type;
CustomInit();
}

/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();

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

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

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

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

/// <summary>
/// Gets or sets possible values include: 'Password', 'Hash', 'Ticket'
/// </summary>
[JsonProperty(PropertyName = "type")]
public CredentialType? Type { get; set; }

}
}
84 changes: 84 additions & 0 deletions Covenant/API/Models/CapturedHashCredential.cs
@@ -0,0 +1,84 @@
// <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 System.Linq;

public partial class CapturedHashCredential
{
/// <summary>
/// Initializes a new instance of the CapturedHashCredential class.
/// </summary>
public CapturedHashCredential()
{
CustomInit();
}

/// <summary>
/// Initializes a new instance of the CapturedHashCredential class.
/// </summary>
/// <param name="hashCredentialType">Possible values include: 'NTLM',
/// 'LM', 'SHA1'</param>
/// <param name="type">Possible values include: 'Password', 'Hash',
/// 'Ticket'</param>
public CapturedHashCredential(string hash = default(string), HashType? hashCredentialType = default(HashType?), int? id = default(int?), string domain = default(string), string username = default(string), string serviceName = default(string), CredentialType? type = default(CredentialType?))
{
Hash = hash;
HashCredentialType = hashCredentialType;
Id = id;
Domain = domain;
Username = username;
ServiceName = serviceName;
Type = type;
CustomInit();
}

/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();

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

/// <summary>
/// Gets or sets possible values include: 'NTLM', 'LM', 'SHA1'
/// </summary>
[JsonProperty(PropertyName = "hashCredentialType")]
public HashType? HashCredentialType { get; set; }

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

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

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

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

/// <summary>
/// Gets or sets possible values include: 'Password', 'Hash', 'Ticket'
/// </summary>
[JsonProperty(PropertyName = "type")]
public CredentialType? Type { get; set; }

}
}

0 comments on commit d0f89b3

Please sign in to comment.