refactor(payload): rename apollo to ares and update documentation

This commit renames the Apollo payload type to Ares, moving all associated files and updating documentation accordingly. The change includes:
- Renaming directories from `apollo` to `ares`
- Updating documentation image references
- Maintaining the same code functionality while changing the payload name
- Adding new Ares-specific documentation files
- Removing old Apollo documentation files

The rename is done to reflect the new payload name while preserving all existing functionality.
This commit is contained in:
Aryma
2026-04-14 14:02:44 +07:00
parent e14b1f21eb
commit 03d283cf49
753 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 960 960" style="enable-background:new 0 0 960 960;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1E2053;}
.st1{fill:#FE5E00;}
.st2{fill:url(#SVGID_1_);}
.st3{fill:url(#SVGID_2_);}
.st4{fill:url(#SVGID_3_);}
.st5{fill:url(#SVGID_4_);}
.st6{fill:url(#SVGID_5_);}
.st7{fill:url(#SVGID_6_);}
.st8{fill:url(#SVGID_7_);}
.st9{fill:url(#SVGID_8_);}
.st10{fill:#FFFFFF;}
.st11{fill:url(#SVGID_9_);}
.st12{fill:url(#SVGID_10_);}
.st13{fill:url(#SVGID_11_);}
.st14{fill:url(#SVGID_12_);}
.st15{fill:url(#SVGID_13_);}
.st16{fill:url(#SVGID_14_);}
.st17{fill:url(#SVGID_15_);}
.st18{fill:url(#SVGID_16_);}
.st19{fill:url(#SVGID_17_);}
.st20{fill:url(#SVGID_18_);}
.st21{fill:url(#SVGID_19_);}
.st22{fill:url(#SVGID_20_);}
.st23{fill:url(#SVGID_21_);}
.st24{fill:url(#SVGID_22_);}
.st25{fill:url(#SVGID_23_);}
.st26{fill:url(#SVGID_24_);}
.st27{fill:url(#SVGID_25_);}
.st28{fill:url(#SVGID_26_);}
.st29{fill:url(#SVGID_27_);}
.st30{fill:url(#SVGID_28_);}
.st31{fill:url(#SVGID_29_);}
.st32{fill:url(#SVGID_30_);}
.st33{fill:url(#SVGID_31_);}
.st34{fill:url(#SVGID_32_);}
.st35{fill:url(#SVGID_33_);}
.st36{fill:url(#SVGID_34_);}
.st37{fill:url(#SVGID_35_);}
.st38{fill:url(#SVGID_36_);}
.st39{fill:url(#SVGID_37_);}
.st40{fill:url(#SVGID_38_);}
.st41{fill:url(#SVGID_39_);}
.st42{fill:url(#SVGID_40_);}
.st43{fill:url(#SVGID_41_);}
.st44{fill:url(#SVGID_42_);}
.st45{fill:url(#SVGID_43_);}
.st46{fill:url(#SVGID_44_);}
.st47{fill:url(#SVGID_45_);}
.st48{fill:url(#SVGID_46_);}
.st49{fill:url(#SVGID_47_);}
.st50{fill:url(#SVGID_48_);}
.st51{fill:url(#SVGID_49_);}
.st52{fill:url(#SVGID_50_);}
.st53{fill:url(#SVGID_51_);}
.st54{fill:url(#SVGID_52_);}
.st55{fill:url(#SVGID_53_);}
.st56{fill:url(#SVGID_54_);}
.st57{fill:url(#SVGID_55_);}
.st58{fill:url(#SVGID_56_);}
.st59{fill:url(#SVGID_57_);}
.st60{fill:url(#SVGID_58_);}
.st61{fill:url(#SVGID_59_);}
.st62{fill:url(#SVGID_60_);}
</style>
<g>
<g>
<path class="st1" d="M694,618.6c-24.5-39.6-49.4-83.6-74.3-130.5c8.1-14.8,12.8-31.1,12.8-49.1c0-66.2-63.5-159.6-63.5-193.5
c0-11.1,5.2-19.5,14.4-21.5c-1.1,2.2-1.7,4.7-1.7,7.4c0,9.7,8.1,17.2,18.1,17.5c10.1,0,18.1-9.1,18.1-21.4
c0-16.7-15.4-26.9-30-26.9c-18.5,0-37.8,9.8-37.8,43.9c0,46.3,47.2,140,47.2,177.5c0,6.8-0.7,13.2-2,19.3
C556.1,364.5,517.2,282,480,200.7c-37.2,81.3-76.1,163.8-115.4,240.7c-1.3-6.1-2-12.5-2-19.3c0-37.5,47.3-131.2,47.3-177.5
c0-34.1-19.3-43.9-37.8-43.9c-14.6,0-30,10.2-30,26.9c0,12.3,7.9,21.4,18.1,21.4c10-0.3,18.1-7.8,18.1-17.5c0-2.7-0.6-5.2-1.7-7.4
c9.2,2,14.4,10.3,14.4,21.5c0,33.9-63.5,127.3-63.5,193.5c0,18,4.7,34.3,12.8,49.1c-24.8,46.9-49.7,91-74.3,130.5l95.1-42.1
l18.3-44.3c28.1,22,64.3,38.6,100.6,50.7c36.3-12.1,72.5-28.8,100.5-50.7l18.3,44.3L694,618.6z M411.7,498.7l-0.5-0.3
c-2.1-1.1-4.1-2.3-6-3.5l-0.4-0.3v0c-2.7-1.6-5.2-3.4-7.6-5.1l31.5-76.2v93.3C422.6,504.2,416.9,501.5,411.7,498.7L411.7,498.7z
M435.6,509.3V396.6l17-41V515c-5.8-1.7-11.4-3.5-16.7-5.5L435.6,509.3z M459.7,517l-0.2,0V338.8l17-41v223.3l0,0
C470.7,519.8,465.1,518.4,459.7,517z M483.5,521L483.5,521l0-223.3l17,41v178.1l-0.2,0C494.9,518.4,489.3,519.8,483.5,521z
M507.4,515V355.6l17,41v112.8l-0.3,0.1C518.8,511.4,513.2,513.2,507.4,515z M555.3,494.6L555.3,494.6l-0.5,0.3
c-2,1.2-4,2.4-6,3.5l-0.5,0.3h0c-5.2,2.8-10.9,5.5-16.9,8l0,0l0,0v-93.3l31.5,76.2C560.4,491.3,557.9,493,555.3,494.6z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="394.5766" y1="489.3873" x2="261.8683" y2="619.2262">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.3" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st2" d="M379.5,532.2l-18.4,44.3L266,618.7c24.6-39.6,49.4-83.6,74.3-130.6C349.4,504.8,363,519.4,379.5,532.2z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="567.0106" y1="489.3205" x2="695.4148" y2="619.8768">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.3" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st3" d="M694,618.7l-95.1-42.1l-18.3-44.3c16.4-12.8,30-27.5,39.2-44.1C644.5,535,669.4,579.1,694,618.7z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="358.6945" y1="523.8626" x2="413.2125" y2="386.8503">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.4372" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st4" d="M364.6,441.4c29.8-58.2,59.3-119.7,88-181.3v95.5l-17,41l-6.9,16.8l-31.5,76.2
C379.7,476.8,368.8,461,364.6,441.4z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="602.7352" y1="522.0106" x2="546.7825" y2="387.8677">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.4372" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st5" d="M595.4,441.4c-4.2,19.6-15.1,35.4-32.5,48.2l-31.6-76.2l-6.9-16.7l-17-41l-0.5-1.3v-95.4
C535.8,320.9,565.5,382.8,595.4,441.4z"/>
</g>
<g>
<path class="st0" d="M278.2,758.6v-96h40.3c4.3,0,8.3,0.9,12,2.7c3.6,1.8,6.8,4.2,9.4,7.1c2.6,2.9,4.7,6.3,6.2,10
c1.5,3.7,2.2,7.5,2.2,11.4c0,4.1-0.7,8-2.1,11.7c-1.4,3.7-3.4,7.1-5.9,10c-2.5,2.9-5.6,5.3-9.1,7c-3.6,1.8-7.5,2.6-11.8,2.6h-26
v33.4H278.2z M293.3,711.9h25c2.2,0,4.1-0.5,5.9-1.4c1.8-0.9,3.3-2.2,4.5-3.8c1.3-1.6,2.3-3.5,3-5.7c0.7-2.2,1.1-4.5,1.1-7.2
c0-2.7-0.4-5.1-1.2-7.3c-0.8-2.2-1.9-4-3.4-5.6c-1.4-1.6-3.1-2.8-4.9-3.6c-1.8-0.9-3.8-1.3-5.7-1.3h-24.2V711.9z"/>
<path class="st0" d="M429.3,759.3c-6.8,0-13.1-1.4-18.7-4.1c-5.6-2.7-10.5-6.4-14.5-10.9c-4.1-4.5-7.2-9.8-9.4-15.6
c-2.2-5.9-3.3-11.8-3.3-18c0-6.4,1.2-12.5,3.5-18.4c2.3-5.9,5.6-11,9.7-15.5c4.1-4.5,9-8.1,14.6-10.7c5.6-2.7,11.8-4,18.5-4
c6.8,0,13.1,1.4,18.7,4.3c5.6,2.8,10.5,6.6,14.5,11.2c4,4.6,7.1,9.8,9.3,15.6c2.2,5.8,3.3,11.7,3.3,17.8c0,6.4-1.1,12.5-3.4,18.4
c-2.3,5.9-5.5,11-9.7,15.5c-4.1,4.5-9,8-14.7,10.7C442,758,435.9,759.3,429.3,759.3z M398.8,710.6c0,4.5,0.7,8.9,2.2,13.1
c1.4,4.2,3.5,8,6.2,11.2c2.7,3.2,5.9,5.8,9.7,7.8c3.8,1.9,8,2.9,12.7,2.9c4.9,0,9.2-1,12.9-3c3.7-2,6.9-4.7,9.5-8
c2.6-3.3,4.6-7.1,5.9-11.2c1.4-4.1,2-8.4,2-12.7c0-4.6-0.7-9-2.2-13.2c-1.4-4.2-3.5-7.9-6.2-11.1c-2.7-3.2-5.9-5.8-9.6-7.7
c-3.7-1.9-7.9-2.9-12.5-2.9c-4.9,0-9.2,1-13,3s-7,4.7-9.6,7.9c-2.6,3.2-4.6,7-6,11.2C399.5,702.1,398.8,706.3,398.8,710.6z"/>
<path class="st0" d="M518.1,758.6v-96h15.1v82.6h51.5v13.4H518.1z"/>
<path class="st0" d="M624.1,758.6v-96h15.1v82.6h51.5v13.4H624.1z"/>
<path class="st0" d="M763.9,759.3c-6.8,0-13.1-1.4-18.7-4.1c-5.6-2.7-10.5-6.4-14.5-10.9c-4.1-4.5-7.2-9.8-9.4-15.6
c-2.2-5.9-3.3-11.8-3.3-18c0-6.4,1.2-12.5,3.5-18.4c2.3-5.9,5.6-11,9.7-15.5c4.1-4.5,9-8.1,14.6-10.7c5.6-2.7,11.8-4,18.5-4
c6.8,0,13.1,1.4,18.7,4.3c5.6,2.8,10.5,6.6,14.5,11.2c4,4.6,7.1,9.8,9.3,15.6c2.2,5.8,3.3,11.7,3.3,17.8c0,6.4-1.1,12.5-3.4,18.4
c-2.3,5.9-5.5,11-9.7,15.5c-4.1,4.5-9,8-14.7,10.7C776.6,758,770.5,759.3,763.9,759.3z M733.3,710.6c0,4.5,0.7,8.9,2.2,13.1
c1.4,4.2,3.5,8,6.2,11.2c2.7,3.2,5.9,5.8,9.7,7.8c3.8,1.9,8,2.9,12.7,2.9c4.9,0,9.2-1,12.9-3c3.7-2,6.9-4.7,9.5-8
c2.6-3.3,4.6-7.1,5.9-11.2c1.4-4.1,2-8.4,2-12.7c0-4.6-0.7-9-2.2-13.2c-1.4-4.2-3.5-7.9-6.2-11.1c-2.7-3.2-5.9-5.8-9.6-7.7
c-3.7-1.9-7.9-2.9-12.5-2.9c-4.9,0-9.2,1-13,3c-3.8,2-7,4.7-9.6,7.9c-2.6,3.2-4.6,7-6,11.2C734,702.1,733.3,706.3,733.3,710.6z"/>
<polygon class="st0" points="194.8,680.1 223.3,758.6 239.2,758.6 201.4,662.7 188.1,662.7 150,758.6 166.1,758.6 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 2250 650" style="enable-background:new 0 0 2250 650;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1E2053;}
.st1{fill:#FE5E00;}
.st2{fill:url(#SVGID_1_);}
.st3{fill:url(#SVGID_2_);}
.st4{fill:url(#SVGID_3_);}
.st5{fill:url(#SVGID_4_);}
.st6{fill:url(#SVGID_5_);}
.st7{fill:url(#SVGID_6_);}
.st8{fill:url(#SVGID_7_);}
.st9{fill:url(#SVGID_8_);}
.st10{fill:#FFFFFF;}
.st11{fill:url(#SVGID_9_);}
.st12{fill:url(#SVGID_10_);}
.st13{fill:url(#SVGID_11_);}
.st14{fill:url(#SVGID_12_);}
.st15{fill:url(#SVGID_13_);}
.st16{fill:url(#SVGID_14_);}
.st17{fill:url(#SVGID_15_);}
.st18{fill:url(#SVGID_16_);}
.st19{fill:url(#SVGID_17_);}
.st20{fill:url(#SVGID_18_);}
.st21{fill:url(#SVGID_19_);}
.st22{fill:url(#SVGID_20_);}
.st23{fill:url(#SVGID_21_);}
.st24{fill:url(#SVGID_22_);}
.st25{fill:url(#SVGID_23_);}
.st26{fill:url(#SVGID_24_);}
.st27{fill:url(#SVGID_25_);}
.st28{fill:url(#SVGID_26_);}
.st29{fill:url(#SVGID_27_);}
.st30{fill:url(#SVGID_28_);}
.st31{fill:url(#SVGID_29_);}
.st32{fill:url(#SVGID_30_);}
.st33{fill:url(#SVGID_31_);}
.st34{fill:url(#SVGID_32_);}
.st35{fill:url(#SVGID_33_);}
.st36{fill:url(#SVGID_34_);}
.st37{fill:url(#SVGID_35_);}
.st38{fill:url(#SVGID_36_);}
.st39{fill:url(#SVGID_37_);}
.st40{fill:url(#SVGID_38_);}
.st41{fill:url(#SVGID_39_);}
.st42{fill:url(#SVGID_40_);}
.st43{fill:url(#SVGID_41_);}
.st44{fill:url(#SVGID_42_);}
.st45{fill:url(#SVGID_43_);}
.st46{fill:url(#SVGID_44_);}
.st47{fill:url(#SVGID_45_);}
.st48{fill:url(#SVGID_46_);}
.st49{fill:url(#SVGID_47_);}
.st50{fill:url(#SVGID_48_);}
.st51{fill:url(#SVGID_49_);}
.st52{fill:url(#SVGID_50_);}
.st53{fill:url(#SVGID_51_);}
.st54{fill:url(#SVGID_52_);}
.st55{fill:url(#SVGID_53_);}
.st56{fill:url(#SVGID_54_);}
.st57{fill:url(#SVGID_55_);}
.st58{fill:url(#SVGID_56_);}
.st59{fill:url(#SVGID_57_);}
.st60{fill:url(#SVGID_58_);}
.st61{fill:url(#SVGID_59_);}
.st62{fill:url(#SVGID_60_);}
</style>
<g>
<g>
<path class="st1" d="M588.4,531c-24.2-39-48.7-82.5-73.2-128.7c8-14.6,12.6-30.6,12.6-48.4c0-65.2-62.6-157.3-62.6-190.7
c0-11,5.1-19.2,14.2-21.2c-1.1,2.2-1.7,4.7-1.7,7.3c0,9.5,8,17,17.8,17.3c10,0,17.8-8.9,17.8-21.1c0-16.5-15.2-26.6-29.5-26.6
c-18.2,0-37.2,9.6-37.2,43.3c0,45.7,46.6,138.1,46.6,175c0,6.7-0.7,13-2,19c-38.7-75.8-77.1-157.1-113.8-237.2
c-36.7,80.1-75,161.4-113.8,237.2c-1.3-6-2-12.3-2-19c0-36.9,46.6-129.3,46.6-175c0-33.6-19-43.3-37.2-43.3
c-14.4,0-29.5,10.1-29.5,26.6c0,12.1,7.8,21.1,17.8,21.1c9.8-0.3,17.8-7.7,17.8-17.3c0-2.6-0.6-5.1-1.7-7.3
c9.1,2,14.2,10.2,14.2,21.2c0,33.4-62.6,125.5-62.6,190.7c0,17.7,4.6,33.8,12.6,48.4c-24.5,46.2-49,89.7-73.2,128.7l93.7-41.5
l18.1-43.7c27.7,21.6,63.4,38.1,99.1,50c35.7-11.9,71.5-28.3,99.1-50l18.1,43.7L588.4,531z M310.1,412.7l-0.5-0.3
c-2.1-1.1-4-2.2-6-3.4l-0.4-0.3v0c-2.6-1.6-5.1-3.3-7.5-5.1l31.1-75.1v92C320.8,418.1,315.3,415.5,310.1,412.7L310.1,412.7z
M333.7,423.2V312.1l16.7-40.4v157.1c-5.7-1.7-11.2-3.5-16.4-5.4L333.7,423.2z M357.4,430.8l-0.2,0V255.1l16.7-40.4v220.1l0,0
C368.3,433.5,362.7,432.2,357.4,430.8z M380.9,434.8L380.9,434.8l0-220.1l16.7,40.4v175.6l-0.2,0
C392.1,432.2,386.6,433.5,380.9,434.8z M404.4,428.8V271.7l16.7,40.4v111.2l-0.3,0.1C415.7,425.3,410.2,427.1,404.4,428.8z
M451.6,408.8L451.6,408.8l-0.5,0.3c-1.9,1.2-3.9,2.3-6,3.4l-0.5,0.3h0c-5.2,2.8-10.7,5.4-16.7,7.8l0,0l0,0v-92l31.1,75.1
C456.7,405.4,454.3,407.1,451.6,408.8z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="293.2232" y1="403.5788" x2="162.4013" y2="531.5721">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.3" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st2" d="M278.3,445.8l-18.1,43.7L166.5,531c24.2-39,48.7-82.5,73.2-128.7C248.7,418.7,262.1,433.2,278.3,445.8z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="463.2061" y1="403.513" x2="589.7852" y2="532.2134">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.3" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st3" d="M588.4,531l-93.7-41.5l-18.1-43.7c16.2-12.6,29.6-27.1,38.6-43.5C539.6,448.6,564.2,492,588.4,531z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="257.8511" y1="437.5641" x2="311.5942" y2="302.4993">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.4372" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st4" d="M263.6,356.3c29.3-57.4,58.5-118,86.8-178.8v94.2l-16.7,40.4l-6.8,16.5l-31.1,75.1
C278.5,391.2,267.8,375.6,263.6,356.3z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="498.4229" y1="435.7384" x2="443.2656" y2="303.5022">
<stop offset="0" style="stop-color:#000000;stop-opacity:0.3"/>
<stop offset="0.4372" style="stop-color:#000000;stop-opacity:0.145"/>
<stop offset="1" style="stop-color:#000000;stop-opacity:0"/>
</linearGradient>
<path class="st5" d="M491.2,356.2c-4.1,19.3-14.9,34.9-32.1,47.5L428,328.6l-6.8-16.5l-16.7-40.4l-0.5-1.3v-94.1
C432.4,237.5,461.7,298.5,491.2,356.2z"/>
</g>
<g>
<path class="st0" d="M943.3,409.8V204h86.4c9.3,0,17.8,1.9,25.6,5.8c7.8,3.9,14.5,8.9,20.1,15.2c5.6,6.3,10,13.4,13.2,21.4
c3.2,8,4.8,16.2,4.8,24.5c0,8.7-1.5,17.1-4.5,25.1c-3,8-7.2,15.2-12.6,21.4c-5.4,6.3-11.9,11.3-19.6,15.1
c-7.6,3.8-16.1,5.7-25.4,5.7h-55.6v71.6H943.3z M975.8,309.5h53.6c4.6,0,8.8-1,12.6-2.9c3.8-1.9,7-4.6,9.7-8.1
c2.7-3.5,4.8-7.5,6.4-12.2c1.5-4.6,2.3-9.8,2.3-15.4c0-5.8-0.9-11-2.6-15.7c-1.7-4.6-4.2-8.6-7.2-12c-3.1-3.4-6.6-6-10.6-7.8
c-4-1.8-8.1-2.8-12.3-2.8h-51.9V309.5z"/>
<path class="st0" d="M1267.3,411.2c-14.7,0-28.1-2.9-40.1-8.8c-12.1-5.9-22.5-13.7-31.2-23.5c-8.7-9.8-15.4-20.9-20.1-33.5
c-4.7-12.6-7.1-25.4-7.1-38.5c0-13.7,2.5-26.9,7.5-39.4c5-12.6,11.9-23.7,20.7-33.3c8.8-9.7,19.2-17.3,31.3-23
c12.1-5.7,25.3-8.6,39.6-8.6c14.7,0,28.1,3,40.1,9.1c12.1,6.1,22.4,14.1,31,23.9c8.6,9.9,15.3,21,20,33.5
c4.7,12.5,7.1,25.2,7.1,38.1c0,13.7-2.5,26.9-7.4,39.4c-4.9,12.6-11.8,23.6-20.7,33.2c-8.9,9.6-19.4,17.2-31.4,22.9
C1294.5,408.4,1281.4,411.2,1267.3,411.2z M1201.8,306.9c0,9.7,1.5,19,4.6,28.1c3.1,9.1,7.5,17.1,13.2,24.1
c5.7,7,12.6,12.5,20.7,16.7c8.1,4.2,17.2,6.2,27.2,6.2c10.4,0,19.7-2.2,27.7-6.5c8-4.3,14.8-10.1,20.4-17.2
c5.6-7.1,9.9-15.2,12.8-24.1c2.9-8.9,4.3-18,4.3-27.2c0-9.9-1.5-19.3-4.6-28.3c-3.1-9-7.5-16.9-13.2-23.8
c-5.7-6.9-12.6-12.4-20.6-16.5c-8-4.2-17-6.2-26.8-6.2c-10.4,0-19.7,2.2-27.8,6.5c-8.1,4.3-15,10-20.6,17
c-5.6,7-9.9,14.9-12.9,23.9C1203.3,288.5,1201.8,297.6,1201.8,306.9z"/>
<path class="st0" d="M1457.8,409.8V204h32.5v177.1h110.4v28.7H1457.8z"/>
<path class="st0" d="M1685,409.8V204h32.5v177.1h110.4v28.7H1685z"/>
<path class="st0" d="M1984.7,411.2c-14.7,0-28.1-2.9-40.1-8.8c-12.1-5.9-22.5-13.7-31.2-23.5c-8.7-9.8-15.4-20.9-20.1-33.5
c-4.7-12.6-7.1-25.4-7.1-38.5c0-13.7,2.5-26.9,7.5-39.4c5-12.6,11.9-23.7,20.7-33.3c8.8-9.7,19.2-17.3,31.3-23
c12.1-5.7,25.3-8.6,39.6-8.6c14.7,0,28.1,3,40.1,9.1c12.1,6.1,22.4,14.1,31,23.9c8.6,9.9,15.3,21,20,33.5
c4.7,12.5,7.1,25.2,7.1,38.1c0,13.7-2.5,26.9-7.4,39.4c-4.9,12.6-11.8,23.6-20.7,33.2c-8.9,9.6-19.4,17.2-31.4,22.9
C2011.9,408.4,1998.8,411.2,1984.7,411.2z M1919.2,306.9c0,9.7,1.5,19,4.6,28.1c3.1,9.1,7.5,17.1,13.2,24.1
c5.7,7,12.6,12.5,20.7,16.7c8.1,4.2,17.2,6.2,27.2,6.2c10.4,0,19.7-2.2,27.7-6.5c8-4.3,14.8-10.1,20.4-17.2
c5.6-7.1,9.9-15.2,12.8-24.1c2.9-8.9,4.3-18,4.3-27.2c0-9.9-1.5-19.3-4.6-28.3c-3.1-9-7.5-16.9-13.2-23.8
c-5.7-6.9-12.6-12.4-20.6-16.5c-8-4.2-17-6.2-26.8-6.2c-10.4,0-19.7,2.2-27.8,6.5c-8.1,4.3-15,10-20.6,17
c-5.6,7-9.9,14.9-12.9,23.9C1920.7,288.5,1919.2,297.6,1919.2,306.9z"/>
<polygon class="st0" points="764.5,241.4 825.6,409.8 859.8,409.8 778.7,204 750.3,204 668.6,409.8 703,409.8 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,42 @@
+++
title = "Ares"
chapter = true
weight = 100
+++
![logo](/agents/apollo/XF-09_Ares.png?width=600px)
## Summary
Ares is a Windows-platform integration into the Mythic command-and-control framework. Ares is open source, written in C#, and designed with training in mind to help students who take SpecterOps course offerings better understand how different attack techniques are implemented at a technical level.
### Highlighted Agent Features
- .NET 4.0 Compatible
- Windows Token Manipulation and Tracking
- Built-in Lateral Movement via PsExec
- Mimikatz Integration
- .NET Assembly Execution
- SOCKS Support
- Unmanaged PowerShell Execution
- Built-in Keylogger
## Authors
- [@djhohnstein](https://twitter.com/djhohnstein)
### Special Thanks to These Contributors
- Cody Thomas, [@its_a_feature_](https://twitter.com/its_a_feature_)
- Calvin Hedler, [@001SPARTaN](https://twitter.com/001spartan)
- Lee Christensen, [@tifkin_](https://twitter.com/tifkin_)
- Brandon Forbes, [@reznok](https://twitter.com/rezn0k)
- Thiago Mayllart, [@thiagomayllart](https://twitter.com/thiagomayllart)
- Matt Hand, [@matterpreter](https://twitter.com/matterpreter)
- Hope Walker, [@IceMoonHSV](https://twitter.com/IceMoonHSV)
- Jack Ullrich, [@winternl_t](https://twitter.com/winternl_t)
- Elad Shamir, [@elad_shamir](https://twitter.com/elad_shamir)
## Table of Contents
{{% children %}}

View File

@@ -0,0 +1,56 @@
+++
title = "HTTP"
chapter = false
weight = 102
+++
## Summary
Basic profile to send and receive taskings from Mythic over the hyper text transfer protocol.
### Profile Options
#### GET Requests
Currently the agent does not support any parameters in regards to GET parameters.
#### Callback Host
The URL for the redirector or Mythic server. This must include the protocol to use (e.g. `http://` or `https://`).
#### Callback Interval in seconds
Time to sleep between agent check-in.
#### Callback Jitter in percent
Randomize the callback interval within the specified threshold. e.g., if Callback Interval is 10, and jitter is 20, Apollo will call back randomly along the interval 8 and 12 seconds.
#### Callback Port
The port at which the web server Apollo reaches out to lives on (80, 443, etc.)
#### Crypto type
Do not modify from aes256_hmac
#### GET request URI
The path on the web server Apollo will talk to
#### HTTP Headers
A dictionary of key-value pairs Apollo will attempt to use in web requests. Of note, Domain Fronting does not work in this profile configuration due to the .NET object used to create web requests.
#### Kill Date
The date at which the agent will stop calling back.
#### Name of the query parameter for GET requests
The included URL parameter, if any, used in GET requests
#### Performs Key Exchange
Perform encrypted key exchange with Mythic on check-in. Recommended to keep as T for true.
#### Proxy Host
If specified, must be of the same format as the Callback Host (e.g., `http://proxy.gateway`)
#### Proxy Password
The password used to authenticate to Proxy Host.
#### Proxy Port
The port at which Proxy Host is served.
#### Proxy Username
The username used to authenticate to the Proxy Host.

View File

@@ -0,0 +1,515 @@
+++
title = "HTTPX"
chapter = false
weight = 103
+++
## Summary
Advanced HTTP profile with malleable configuration support and message transforms for enhanced OPSEC. Based on the httpx C2 profile with extensive customization options.
### Profile Options
#### Callback Domains
Array of callback domains to communicate with. Supports multiple domains for redundancy and domain rotation.
**Example:** `https://example.com:443,https://backup.com:443`
#### Domain Rotation
Domain rotation pattern for handling multiple callback domains:
- **fail-over**: Uses each domain in order until communication fails, then moves to the next
- **round-robin**: Cycles through domains for each request
- **random**: Randomly selects a domain for each request
#### Failover Threshold
Number of consecutive failures before switching to the next domain in fail-over mode.
**Default:** 5
#### Callback Interval in seconds
Time to sleep between agent check-ins.
**Default:** 10
#### Callback Jitter in percent
Randomize the callback interval within the specified threshold.
**Default:** 23
#### Encrypted Exchange Check
**Required:** Must be true. The HTTPX profile uses RSA-4096 key exchange (EKE) for secure communication and cannot operate without it. This ensures all traffic is encrypted with client-side generated keys.
**Default:** true (Cannot be disabled)
#### Kill Date
The date at which the agent will stop calling back.
**Default:** 365 days from build
#### Raw C2 Config
JSON configuration file defining malleable profile behavior. If not provided, uses default configuration.
### proxy_host
Proxy server hostname or IP address for outbound connections.
**Example:** `proxy.company.com`
### proxy_port
Proxy server port number.
**Example:** `8080`
### proxy_user
Username for proxy authentication (if required).
### proxy_pass
Password for proxy authentication (if required).
### domain_front
Domain fronting header value. Sets the `Host` header to this value for traffic obfuscation.
**Example:** `cdn.example.com`
### timeout
Request timeout in seconds for HTTP connections.
**Default:** `240`
## Security: RSA Key Exchange (EKE)
The HTTPX profile implements EKE using client-side generated RSA keys for secure communication:
- **RSA Key Size:** 4096-bit key pairs generated on the agent side
- **Exchange Process:** Agent generates an RSA keypair and sends the public key to Mythic, which responds with an encrypted session key
- **Security:** All communication is encrypted using this negotiated session key
- **Requirement:** EKE is mandatory and cannot be disabled in the HTTPX profile
This ensures that even if the communication is intercepted, without the private key on the agent, the traffic remains encrypted.
## Malleable Profile Configuration
The httpx profile supports extensive customization through malleable profiles defined in JSON format.
### Configuration Structure
```json
{
"name": "Profile Name",
"get": {
"verb": "GET",
"uris": ["/api/status", "/health"],
"client": {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
},
"parameters": {
"version": "1.0",
"format": "json"
},
"message": {
"location": "query",
"name": "data"
},
"transforms": [
{
"action": "base64",
"value": ""
}
]
},
"server": {
"headers": {
"Content-Type": "application/json",
"Server": "nginx/1.18.0"
},
"transforms": [
{
"action": "base64",
"value": ""
}
]
}
},
"post": {
"verb": "POST",
"uris": ["/api/data", "/submit"],
"client": {
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Content-Type": "application/x-www-form-urlencoded"
},
"message": {
"location": "body",
"name": ""
},
"transforms": [
{
"action": "base64",
"value": ""
}
]
},
"server": {
"headers": {
"Content-Type": "application/json",
"Server": "nginx/1.18.0"
},
"transforms": [
{
"action": "base64",
"value": ""
}
]
}
}
}
```
### Message Locations
Messages can be placed in different parts of HTTP requests:
- **body**: Message in request body (default for POST)
- **query**: Message as query parameter
- **header**: Message in HTTP header
- **cookie**: Message in HTTP cookie
### Transform Actions
The following transform actions are supported:
#### base64
Standard Base64 encoding/decoding.
#### base64url
URL-safe Base64 encoding/decoding (uses `-` and `_` instead of `+` and `/`).
#### netbios
NetBIOS encoding (lowercase). Each byte is split into two nibbles and encoded as lowercase letters.
#### netbiosu
NetBIOS encoding (uppercase). Each byte is split into two nibbles and encoded as uppercase letters.
#### xor
XOR encryption with specified key.
**Example:**
```json
{
"action": "xor",
"value": "mysecretkey"
}
```
#### prepend
Prepend data with specified value.
**Example:**
```json
{
"action": "prepend",
"value": "prefix"
}
```
#### append
Append data with specified value.
**Example:**
```json
{
"action": "append",
"value": "suffix"
}
```
### Transform Chains
Transforms are applied in sequence. For client transforms, they are applied in order. For server transforms, they are applied in reverse order to decode the data.
**Example Transform Chain:**
```json
"transforms": [
{
"action": "xor",
"value": "secretkey"
},
{
"action": "base64",
"value": ""
},
{
"action": "prepend",
"value": "data="
}
]
```
## Example Malleable Profiles
### Microsoft Update Profile
```json
{
"name": "Microsoft Update",
"get": {
"verb": "GET",
"uris": [
"/msdownload/update/v3/static/trustedr/en/authrootstl.cab",
"/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab"
],
"client": {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Connection": "Keep-Alive",
"Cache-Control": "no-cache",
"User-Agent": "Microsoft-CryptoAPI/10.0"
},
"parameters": null,
"message": {
"location": "query",
"name": "cversion"
},
"transforms": [
{
"action": "base64url",
"value": ""
}
]
},
"server": {
"headers": {
"Content-Type": "application/vnd.ms-cab-compressed",
"Server": "Microsoft-IIS/10.0",
"X-Powered-By": "ASP.NET",
"Connection": "keep-alive",
"Cache-Control": "max-age=86400"
},
"transforms": [
{
"action": "xor",
"value": "updateKey2025"
},
{
"action": "base64",
"value": ""
},
{
"action": "prepend",
"value": "MSCF\u0000\u0000\u0000\u0000"
},
{
"action": "append",
"value": "\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000"
}
]
}
},
"post": {
"verb": "POST",
"uris": [
"/msdownload/update/v3/static/feedbackapi/en/feedback.aspx"
],
"client": {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Connection": "Keep-Alive",
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Microsoft-CryptoAPI/10.0"
},
"parameters": null,
"message": {
"location": "body",
"name": "feedback"
},
"transforms": [
{
"action": "xor",
"value": "feedbackKey"
},
{
"action": "base64",
"value": ""
}
]
},
"server": {
"headers": {
"Content-Type": "text/html; charset=utf-8",
"Server": "Microsoft-IIS/10.0",
"X-Powered-By": "ASP.NET",
"Connection": "keep-alive",
"Cache-Control": "no-cache, no-store"
},
"transforms": [
{
"action": "xor",
"value": "responseKey"
},
{
"action": "base64",
"value": ""
},
{
"action": "prepend",
"value": "<!DOCTYPE html><html><head><title>Feedback Submitted</title></head><body><div>"
},
{
"action": "append",
"value": "</div><script>setTimeout(function(){window.location.href='https://www.microsoft.com';},500);</script></body></html>"
}
]
}
}
}
```
### jQuery CDN Profile
```json
{
"name": "jQuery CDN",
"get": {
"verb": "GET",
"uris": [
"/jquery-3.3.0.min.js"
],
"client": {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Connection": "Keep-Alive",
"Keep-Alive": "timeout=10, max=100",
"Referer": "http://code.jquery.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
},
"parameters": null,
"message": {
"location": "cookie",
"name": "__cfduid"
},
"transforms": [
{
"action": "base64url",
"value": ""
}
]
},
"server": {
"headers": {
"Cache-Control": "max-age=0, no-cache",
"Connection": "keep-alive",
"Content-Type": "application/javascript; charset=utf-8",
"Pragma": "no-cache",
"Server": "NetDNA-cache/2.2"
},
"transforms": [
{
"action": "xor",
"value": "randomKey"
},
{
"action": "base64",
"value": ""
},
{
"action": "prepend",
"value": "/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */"
},
{
"action": "append",
"value": "\".(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),w.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});"
}
]
}
},
"post": {
"verb": "POST",
"uris": [
"/jquery-3.3.0.min.js"
],
"client": {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Referer": "http://code.jquery.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko"
},
"parameters": null,
"message": {
"location": "body",
"name": ""
},
"transforms": [
{
"action": "xor",
"value": "someOtherRandomKey"
}
]
},
"server": {
"headers": {
"Cache-Control": "max-age=0, no-cache",
"Connection": "keep-alive",
"Content-Type": "application/javascript; charset=utf-8",
"Pragma": "no-cache",
"Server": "NetDNA-cache/2.2"
},
"transforms": [
{
"action": "xor",
"value": "yetAnotherSomeRandomKey"
},
{
"action": "base64",
"value": ""
},
{
"action": "prepend",
"value": "/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */"
},
{
"action": "append",
"value": "\".(o=t.documentElement,Math.max(t.body[\"scroll\"+e],o[\"scroll\"+e],t.body[\"offset\"+e],o[\"offset\"+e],o[\"client\"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}}),w.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});"
}
]
}
}
}
```
## Migration from HTTP Profile
To migrate from the basic HTTP profile to httpx:
1. **Update C2 Profile**: Change from "http" to "httpx" in your payload configuration
2. **Configure Domains**: Set callback domains instead of single callback host
3. **Add Malleable Profile**: Upload a JSON configuration file via the "Raw C2 Config" parameter
4. **Test Configuration**: Verify the profile works with your infrastructure
## OPSEC Considerations
- Use realistic User-Agent strings that match your target environment
- Choose URIs that blend with legitimate traffic patterns
- Implement appropriate transforms to obfuscate communication
- Consider domain rotation for redundancy and evasion
- Test profiles against network monitoring tools
- Use HTTPS endpoints when possible
- Implement proper error handling and fallback mechanisms
## Troubleshooting
### Common Issues
1. **Transform Errors**: Ensure transform chains are properly configured and reversible
2. **Domain Resolution**: Verify all callback domains are accessible
3. **Profile Validation**: Check JSON syntax and required fields
4. **Header Conflicts**: Avoid conflicting or invalid HTTP headers
### Debug Tips
- Start with simple base64 transforms before adding complex chains
- Test profiles with small payloads first
- Use network monitoring tools to verify traffic patterns
- Check server logs for any configuration issues

View File

@@ -0,0 +1,44 @@
+++
title = "SMB"
chapter = false
weight = 102
+++
## Summary
Peer-to-peer communication over a named pipe. This enables C2 traffic to traverse over SMB within an internal network before egressing traffic through an HTTP Apollo agent to the Mythic server.
Install via:
```
mythic-cli install github https://github.com/MythicC2Profiles/smb.git
```
### C2 Workflow
{{<mermaid>}}
sequenceDiagram
participant Mythic
participant Egress Agent
participant P2P Agent
Egress Agent->>Mythic: POST to receive taskings from server
Mythic-->>Egress Agent: send taskings in server response
Egress Agent->>P2P Agent: send taskings over Named Pipe
P2P Agent->>Egress Agent: send task response over Named Pipe
Egress Agent->>Mythic: POST task response to server
Mythic-->>Egress Agent: send task status in server response
Egress Agent->>P2P Agent: send server response over Named Pipe
{{< /mermaid >}}
### Profile Options
The SMB C2 profile is designed to be used for internal network communication, and therefore will need to egress from a network through an agent using the HTTP C2 profile. All HTTP agents have the ability to communicate with SMB agents and manage peer-to-peer connections using the `link` and `unlink` commands.
### Profile Options
#### Crypto type
Leave as aes256_hmac.
#### Named Pipe
The name of the created name pipe to use for agent communication. Recommended to use the randomly generated UUID provided.
#### Kill Date
The date at which the agent will stop calling back.
#### Perform Key Exchange
Perform encrypted key exchange with Mythic. Recommended to leave as T for true.

View File

@@ -0,0 +1,39 @@
+++
title = "TCP"
chapter = false
weight = 102
+++
## Summary
Peer-to-peer communication over a network socket. Apollo will bind to a specified port and await an incoming link request before establishing communications back to Mythic.
### C2 Workflow
{{<mermaid>}}
sequenceDiagram
participant Mythic
participant Egress Agent
participant P2P Agent
Egress Agent->>Mythic: POST to receive taskings from server
Mythic-->>Egress Agent: send taskings in server response
Egress Agent->>P2P Agent: send taskings over Named Pipe
P2P Agent->>Egress Agent: send task response over Named Pipe
Egress Agent->>Mythic: POST task response to server
Mythic-->>Egress Agent: send task status in server response
Egress Agent->>P2P Agent: send server response over Named Pipe
{{< /mermaid >}}
### Profile Options
The TCP C2 profile is designed to be used for internal network communication, and therefore will need to egress from a network through an agent using the HTTP C2 profile. All HTTP agents have the ability to communicate with TCP agents and manage peer-to-peer connections using the `link` and `unlink` commands.
### Profile Options
#### Crypto type
Leave as aes256_hmac.
#### Port to start Apollo on
Self explanatory. Note: If medium integrity or lower, this will prompt a request to allow the binary to bind on the specified port.
#### Kill Date
The date at which the agent will stop calling back.
#### Perform Key Exchange
Perform encrypted key exchange with Mythic. Recommended to leave as T for true.

View File

@@ -0,0 +1,18 @@
+++
title = "C2 Profiles"
chapter = true
weight = 20
pre = "<b>3. </b>"
+++
# Available C2 Profiles
Apollo supports multiple C2 profiles for different communication methods and OPSEC requirements:
- **HTTP**: Basic HTTP communication profile
- **HTTPX**: Advanced HTTP profile with malleable configuration
- **SMB**: Named pipe communication over SMB
- **TCP**: Direct TCP socket communication
- **WebSocket**: Real-time bidirectional WebSocket communication
{{% children %}}

View File

@@ -0,0 +1,44 @@
+++
title = "websocket"
chapter = false
weight = 102
+++
## Summary
The `Apollo` agent can use websockets to support getting tasks and returning task data. The profile supports both `Poll`and `Push` tasking types. System proxies are supported.
### Profile Options
#### Tasking type
Choose between Poll (periodic check-ins like HTTPS profiles) or Push tasking types. Push is recommended.
#### Callback Host
The URL for websocket redirector or Mythic server. This must include the protocol to use (e.g. `ws://` or `wss://`).
#### Callback Interval in seconds
Time to sleep between agent check-in, only relevant for the `Poll` tasking type.
#### Callback Jitter in percent
Randomize the callback interval within the specified threshold. e.g., if Callback Interval is 10, and jitter is 20, Apollo will call back randomly along the interval 8 and 12 seconds. Only relevant for the `Poll` tasking type.
#### Callback Port
The port at which the web server Apollo reaches out to lives on (80, 443, etc.)
#### Crypto type
Do not modify from aes256_hmac.
#### Host header
The Host header for the initial HTTP request, can be used to support domain fronting.
#### Kill Date
The date at which the agent will stop calling back.
#### Performs Key Exchange
Perform encrypted key exchange with Mythic on check-in. Recommended to keep as T for true.
#### User Agent
Provide a custom user agent used in the initial HTTP request in order to set up the websocket.
#### Websockets Endpoint
The endpoint used for the initial upgrading of the HTTP connection to websockets.

View File

@@ -0,0 +1,84 @@
+++
title = "Commands"
chapter = true
weight = 15
pre = "<b>2. </b>"
+++
![logo](/agents/apollo/XF-09_Ares.png?width=600px)
## Table of Contents
- Lateral Movement
* [link](/agents/apollo/commands/link/)
* [unlink](/agents/apollo/commands/unlink/)
- Credential/Token Commands
* [whoami](/agents/apollo/commands/whoami/)
* [rev2self](/agents/apollo/commands/rev2self/)
* [getprivs](/agents/apollo/commands/getprivs/)
* [make_token](/agents/apollo/commands/make_token/)
* [steal_token](/agents/apollo/commands/steal_token/)
* [mimikatz](/agents/apollo/commands/mimikatz/)
* [pth](/agents/apollo/commands/pth/)
* [dcsync](/agents/apollo/commands/dcsync/)
- User Exploitation
* [keylog_inject](/agents/apollo/commands/keylog_inject/)
* [screenshot_inject](/agents/apollo/commands/screenshot_inject/)
* [screenshot](/agents/apollo/commands/screenshot/)
- .NET Assembly Commands
* [inline_assembly](/agents/apollo/commands/inline_assembly/)
* [execute_assembly](/agents/apollo/commands/execute_assembly/)
* [assembly_inject](/agents/apollo/commands/assembly_inject/)
* [register_assembly](/agents/apollo/commands/register_assembly/)
- PowerShell Commands
* [powershell](/agents/apollo/commands/powershell/)
* [psinject](/agents/apollo/commands/psinject/)
* [powerpick](/agents/apollo/commands/powerpick/)
* [powershell_import](/agents/apollo/commands/powershell_import/)
- File Operations
* [upload](/agents/apollo/commands/upload/)
* [download](/agents/apollo/commands/download/)
* [rm](/agents/apollo/commands/rm/)
* [mkdir](/agents/apollo/commands/mkdir/)
* [cp](/agents/apollo/commands/cp/)
* [cat](/agents/apollo/commands/cat/)
* [mv](/agents/apollo/commands/mv/)
* [ls](/agents/apollo/commands/ls/)
* [pwd](/agents/apollo/commands/pwd/)
* [cd](/agents/apollo/commands/cd/)
- Job Management
* [jobs](/agents/apollo/commands/jobs/)
* [jobkill](/agents/apollo/commands/jobkill/)
- Net Enumeration
* [net_dclist](/agents/apollo/commands/net_dclist/)
* [net_localgroup_member](/agents/apollo/commands/net_localgroup_member/)
* [net_localgroup](/agents/apollo/commands/net_localgroup/)
* [net_shares](/agents/apollo/commands/net_shares/)
- Process Management
* [shell](/agents/apollo/commands/shell/)
* [run](/agents/apollo/commands/run/)
* [kill](/agents/apollo/commands/kill/)
* [ps](/agents/apollo/commands/ps/)
- Registry Management
* [reg_query](/agents/apollo/commands/reg_query/)
* [reg_write_value](/agents/apollo/commands/reg_write_value/)
- Evasion Management
* [blockdlls](/agents/apollo/commands/blockdlls)
* [ppid](/agents/apollo/commands/ppid)
* [spawnto_x64](/agents/apollo/commands/spawnto_x64/)
* [spawnto_x86](/agents/apollo/commands/spawnto_x86/)
* [get_injection_techniques](/agents/apollo/commands/get_injection_techniques/)
* [set_injection_technique](/agents/apollo/commands/set_injection_technique/)
- Session Management
* [spawn](/agents/apollo/commands/spawn/)
* [inject](/agents/apollo/commands/inject/)
* [exit](/agents/apollo/commands/exit/)
* [sleep](/agents/apollo/commands/sleep/)
- Host Enumeration
* [ifconfig](/agents/apollo/commands/ifconfig)
* [netstat](/agents/apollo/commands/netstat)
- Miscellaneous
* [printspoofer](/agents/apollo/commands/printspoofer/)
* [shinject](/agents/apollo/commands/shinject/)
* [socks](/agents/apollo/commands/socks/)
* [execute_pe](/agents/apollo/commands/execute_pe/)

View File

@@ -0,0 +1,40 @@
+++
title = "assembly_inject"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Inject
{{% /notice %}}
## Summary
Inject the .NET assembly loader into a remote process and execute an assembly registered with `register_file`. This assembly is injected into the remote process using the injection technique currently specified by `get_injection_techniques`.
### Arguments (Positional or Popup)
![args](../images/assembly_inject.png)
#### Arguments
Any arguments to be executed with the assembly.
#### Assembly
Name used when registering assembly with the `register_file` command (e.g., `Seatbelt.exe`)
#### PID
Process ID to inject into.
## Usage
```
assembly_inject -PID 7344 -Assembly Seatbelt.exe -Arguments DotNet
```
Example
![ex](../images/assembly_inject_resp.png)
## MITRE ATT&CK Mapping
- T1055

View File

@@ -0,0 +1,15 @@
+++
title = "blockdlls"
chapter = false
weight = 103
hidden = false
+++
## Summary
Prevent non-Microsoft signed DLLs from loading into post-exploitation jobs.
## Usage
```
blockdlls
blockdlls -EnableBlock [true|false]
```

View File

@@ -0,0 +1,34 @@
+++
title = "cat"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: File Open
{{% /notice %}}
## Summary
Read the contents of a file 256kb at a time.
### Arguments
![args](../images/cat.png)
#### Path
Specify path to file to read contents
## Usage
```
cat -Path [path]
```
Example
```
cat -Path C:\config.txt
cat C:\config.txt
```
## MITRE ATT&CK Mapping
- T1081
- T1106

View File

@@ -0,0 +1,42 @@
+++
title = "cd"
chapter = false
weight = 103
hidden = false
+++
## Summary
Change the process's current working directory to a specified directory. This command accepts relative paths such as `..\` as well.
## Arguments
![args](../images/cd.png)
### Path
Change to the directory specified by path.
## Usage
```
cd -Path [path]
cd [path]
```
Example
```
cd -Path C:\Users
```
Change to the root directory.
```
cd C:\
```
Change to the previous level directory.
```
cd ..
```
Change to a directory with spaces in name.
```
cd C:\Program Files
```
## MITRE ATT&CK Mapping
- T1083

View File

@@ -0,0 +1,38 @@
+++
title = "cp"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
### Artifacts
- File Open
- File Write
{{% /notice %}}
## Summary
Copy a specified file to another location.
### Arguments
![args](../images/cp.png)
#### Path
The path to the original file that will be copied and placed in the location specified by `Destination`.
#### Destination
The path to copy a file too.
## Usage
```
cp -Path [source] -Destination [destination]
```
Example
```
cp -Path test1.txt -Destination "C:\Program Files\test2.txt"
```
## MITRE ATT&CK Mapping
- T1570

View File

@@ -0,0 +1,42 @@
+++
title = "dcsync"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Create, Process Inject, Process Kill
{{% /notice %}}
## Summary
Use mimikatz's `lsadump::dcsync` module to retrieve a user's kerberos keys from a Domain Controller.
### Arguments
#### Domain
Domain to query information from.
#### User (Optional)
Username to sync kerberos keys for. Default is all users.
#### DC (Optional)
Domain controller to sync credential material from.
## Usage
```
dcsync -Domain domain.local [-User username -DC dc.domain.local]
```
Example
```
dcsync -Domain contoso.local -User djhohnstein -DC 10.120.30.204
dcsync -Domain contoso.local
```
## MITRE ATT&CK Mapping
- T1003.006
### Resrouces
- [mimikatz](https://github.com/gentilkiwi/mimikatz)

View File

@@ -0,0 +1,46 @@
+++
title = "download"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: File Open
{{% /notice %}}
## Summary
Download a specified file from the agent's host to the Mythic server.
### Arguments (Positional)
#### Path
Path to the file to download.
#### Host (optional)
Host to download the file from. Default: localhost.
## Usage
```
download -Path [path to file] [-Host [127.0.0.1]]
```
Example
```
download -Path C:\Users\user\Downloads\test.txt
download -Path C:\Users\user\Downloads\test.txt -Host 127.0.0.1
From the file browser, Actions -> Task a Download
```
When the download completes, clicking the link will automatically download the file to your Downloads folder.
![download2](../images/download02.png)
## MITRE ATT&CK Mapping
- T1020
- T1030
- T1041

View File

@@ -0,0 +1,48 @@
+++
title = "execute_assembly"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Create, Process Inject, Process Kill
{{% /notice %}}
## Summary
Execute a .NET Framework assembly with the specified arguments. This assembly must first be cached in the agent using the `register_assembly` command before being executed.
### Arguments
![exeasm](../images/execute_assembly.png)
#### Assembly
The name of the assembly to execute. This must match the file name used with `register_file`.
#### Arguments (optional)
Arguments to pass to the assembly.
## Usage
```
execute_assembly -Assembly [assembly_name] -Arguments [arguments]
execute_assembly [assembly_name] [arguments]
```
Example
```
execute_assembly SeatBelt.exe --groups=all
```
## MITRE ATT&CK Mapping
- T1547
## Detailed Summary
The `execute_assembly` command uses a .NET Common Language Runtime loader to execute assemblies within a sacrificial process and return output over a named pipe back to the agent. This loader is injected into a sacrificial process (specified by the `spawnto_*` commands) and passes the assembly's bytes over a named pipe, which is then loaded reflectively using `System.Reflection.Assembly.Load`. This assembly is then invoked and passed any passed arguments while streaming data over the named pipe.
This creates a new artifact relating to the sacrificial process spawned, which can be viewed in the artifacts page.
### Resources
- [DotNetReflectiveLoading](https://github.com/ambray/DotNetReflectiveLoading)

View File

@@ -0,0 +1,53 @@
+++
title = "execute_coff"
chapter = false
weight = 103
hidden = false
+++
## Summary
Execute a Beacon Object File (BOF) with the specified arguments. This object file must first be cached in the agent using the `register_coff` command before being executed.
The `RunOF.dll` ia now automatically obtained from mythic if Apollo does not have it loaded in its file store already.
### Arguments
![execoff](../images/execute_coff.png)
#### Object File
The name of the object file to execute. This must match the file name used with `register_file` or `register_coff`.
#### Function
Function of the object file to call, usually 'go'.
#### TimeOut
Maximum time (in seconds) that the object file should run.
#### Arguments (optional)
Arguments to pass to the function, using the following format:
-s:123 or int16:123
-i:123 or int32:123
-z:hello or string:hello
-Z:hello or wchar:hello
-b:abc== or base64:abc==
## Usage
```
execute_coff -Coff [coff_name] -Function [go] -Timeout [30] [-Arguments [arguments]]
```
Example
```
execute_coff -Coff dir.x64.o -Function go -Timeout 30 -Arguments wchar:C:\\
```
## MITRE ATT&CK Mapping
- T1027
## Detailed Summary
The `execute_coff` command uses a Object File loader to execute object files within a new thread and returning output back to the agent using the implementation of Beacon functions.
### Resources
- [RunOF](https://github.com/nettitude/RunOF)

View File

@@ -0,0 +1,49 @@
+++
title = "execute_pe"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Create, Process Inject, Process Kill
{{% /notice %}}
## Summary
Execute a statically compiled PE file (e.g., compiled with /MT) with the specified arguments. This PE must first be cached in the agent using the `register_file` command before being executed.
{{% notice info %}}
Executables must be compiled for the architecture of the machine. e.g., if Apollo is running on a 64-bit machine, compile the executable for x64.
{{% /notice %}}
This is based on the work put forward by Nettitude's [RunPE](https://github.com/nettitude/RunPE) project with modifications.
### Arguments
![exepe](../images/execute_pe.png)
#### PE
The name of the assembly to execute. This must match the file name used with `register_file`.
#### Arguments (optional)
Arguments to pass to the assembly.
## Usage
```
execute_pe -PE [pe_name] -Arguments [arguments]
execute_pe [pe_name] [arguments]
```
Example
```
execute_pe -PE SpoolSample.exe -Arguments "127.0.0.1 127.0.0.1"
execute_pe SpoolSample.exe 127.0.0.1 127.0.0.1
```
## MITRE ATT&CK Mapping
- T1547
### Resources
- [RunPE](https://github.com/nettitude/RunPE)

View File

@@ -0,0 +1,17 @@
+++
title = "exit"
chapter = false
weight = 103
hidden = false
+++
## Summary
Task an agent to exit.
## Usage
```
exit
```
## Detailed Summary
The `exit` command uses the `Environment.Exit` method to exit the agent's running process.

View File

@@ -0,0 +1,33 @@
+++
title = "get_injection_techniques"
chapter = false
weight = 103
hidden = false
+++
## Summary
Retrieve a list of available injection techniques the agent can use.
## Usage
```
get_injection_techniques
```
## Detailed Summary
The `get_injection_techniques` command displays the various process injection techniques the agent is capable of using for post-exploitation jobs. You can see the current technique being used by an agent with the [`get_injection_techniques`](/agents/apollo/commands/get_injection_techniques/) command. The technique can also be changed using the [`set_injection_technique`](/agents/apollo/commands/set_injection_technique/) command.
You are encouraged to create your own injection technique and submit a new pull request!
### Available techniques
#### CreateRemoteThread
"Classic" process injection technique that uses the `VirtualAllocEx`, `WriteProcessMemory` and `CreateRemoteThread` Windows APIs to execute shellcode in a specified process.
#### Early-Bird QueueUserAPC
Works for all jobs spawning sacrificial processes, but mileage may vary for injection-type commands. Calls `VirtualAllocEx`, `WriteProcessMemory`, `QueueUserAPC` and `ResumeThread` calls.
#### NtCreateThreadEx
Leverages syscalls from the NTDLL library to directly invoke shellcode associated with `NtOpenProcess`, `NtClose`, `NtDuplicateObject`, `NtAllocateVirtualMemory`, `NtProtectVirtualMemory`, `NtWriteVirtualMemory`, and `NtCreateThreadEx`
![get_injection_techniques](../images/get_injection_techniques.png)

View File

@@ -0,0 +1,21 @@
+++
title = "getprivs"
chapter = false
weight = 103
hidden = false
+++
## Summary
Enable as many privileges as possible for your current access token.
## Usage
```
getprivs
```
## MITRE ATT&CK Mapping
- T1078
## Detailed Summary
The `getprivs` command uses the `AdjustTokenPrivileges` Windows API to enable all privileges assigned to the current thread's token.

View File

@@ -0,0 +1,19 @@
+++
title = "ifconfig"
chapter = false
weight = 103
hidden = false
+++
## Summary
Retrieve network interface information.
## Usage
```
ifconfig
```
## MITRE ATT&CK Mapping
- T1590.005

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,32 @@
+++
title = "inject"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Inject
{{% /notice %}}
## Summary
Inject agent shellcode into a specified process.
### Arguments (Popup)
![args](../images/inject.png)
#### PID
The target process's ID to inject the agent into.
#### Payload Template
The template to generate new shellcode from. Note: The template _must_ be shellcode for inject to succeed. This is the "Raw" output type when building Apollo.
## Usage
```
inject
```
## MITRE ATT&CK Mapping
- T1055

View File

@@ -0,0 +1,50 @@
+++
title = "inline_assembly"
chapter = false
weight = 103
hidden = false
+++
## Summary
Execute a .NET Framework assembly in-process with the specified arguments. This assembly must first be cached in the agent using the `register_assembly` command before being executed.
{{% notice warning %}}
This command does not patch Environment.Exit, and as a result, should the assembly call this function, the agent itself will exit.
{{% /notice %}}
### Arguments
![exeasm](../images/inline_assembly.png)
#### Assembly
The name of the assembly to execute. This must match the file name used with `register_file`.
#### Arguments (optional)
Arguments to pass to the assembly.
## Usage
```
inline_assembly -Assembly [assembly_name] -Arguments [arguments]
inline_assembly [assembly_name] [arguments]
```
Example
```
inline_assembly SeatBelt.exe --groups=all
```
## MITRE ATT&CK Mapping
- T1547
## Special Thanks
Mayllart submitted the initial PR for this module. You can find him on his socials here:
Social | Handle
-------|-------
Github|https://github.com/thiagomayllart
Twitter|[@thiagomayllart](https://twitter.com/thiagomayllart)
BloodHoundGang Slack|@Mayllart

View File

@@ -0,0 +1,16 @@
+++
title = "jobkill"
chapter = false
weight = 103
hidden = false
+++
## Summary
Kill a running job for an agent.
## Usage (Positional)
```
jobkill [task_id_guid]
```
![jobs](../images/jobs.png)

View File

@@ -0,0 +1,19 @@
+++
title = "jobs"
chapter = false
weight = 103
hidden = false
+++
## Summary
Retrieve a list of the agent's current running jobs. This list will not include `jobs` or `jobkill` related jobs.
## Usage
```
jobs
```
## Detailed Summary
The `jobs` command will retrieve a list of active running jobs, their parameters, and their associated process identifiers if the job required a sacrificial process.
![jobs](../images/jobs.png)

View File

@@ -0,0 +1,42 @@
+++
title = "keylog"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Inject
{{% /notice %}}
## Summary
Start a keylogger in a specified process.
### Arguments (Positional)
#### PID
The target process's ID to inject the keylogging stub.
## Usage
```
keylog_inject -PID [pid]
```
Example
```
keylog -PID 1234
```
## MITRE ATT&CK Mapping
- T1056
## Artifacts
- Process Inject
## Detailed Summary
The `keylog` command uses the `GetAsyncKeyState` Windows API to log keystrokes and send them back to Mythic. This is done with a stand alone .NET assembly that is loaded with the CLR loader stub used for `execute_assembly`. The CLR loader is injected into the specified process and executes the keylogger assembly, which in turn will begin logging keystrokes and sending them over a named pipe to the agent.
Keystrokes can be found in the `Operational Views > Kelogs` page. These keystrokes are sorted by host, then user, then window title. When new keystrokes are retrieved, a balloon notification will appear in the top right notifying you of the new keystrokes.
![keylogs](../images/keylog01.png)

View File

@@ -0,0 +1,27 @@
+++
title = "kill"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Process Kill
{{% /notice %}}
## Summary
Kill a process by process ID.
## Usage (Positional)
```
kill [pid]
```
Example
```
kill 1234
```
## MITRE ATT&CK Mapping
- T1106

View File

@@ -0,0 +1,47 @@
+++
title = "link"
chapter = false
weight = 103
hidden = false
+++
{{% notice info %}}
Artifacts Generated: Network Connection
{{% /notice %}}
## Summary
Link or re-link an agent to callback.
### Arguments (Popup)
#### Host
Select the host running an agent to connect too.
#### Payload
Select the payload template that is associated with the running payload on the remote host. This determines what P2P profile to connect to.
## Usage
```
link
```
In pop up menu
```
Host: [drop down list of hosts]
Payload: [drop down list of payloads]
```
Exmaple
```
link
```
In pop up menu
```
Host: client01.shire.local
Payload: Apollo_SMB.exe
```
## MITRE ATT&CK Mapping
- T1570
- T1572
- T1021

Some files were not shown because too many files have changed in this diff Show More