first commit
135
documentation-payload/apollo/Apollo.svg
Normal 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 |
141
documentation-payload/apollo/ApolloLandscape.svg
Normal 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 |
42
documentation-payload/apollo/_index.md
Normal file
@@ -0,0 +1,42 @@
|
||||
+++
|
||||
title = "Apollo"
|
||||
chapter = true
|
||||
weight = 100
|
||||
+++
|
||||
|
||||

|
||||
|
||||
## Summary
|
||||
|
||||
Apollo is a Windows-platform integration into the Mythic command-and-control framework. Apollo 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 %}}
|
||||
56
documentation-payload/apollo/c2_profiles/HTTP.md
Normal 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.
|
||||
515
documentation-payload/apollo/c2_profiles/HTTPX.md
Normal 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
|
||||
44
documentation-payload/apollo/c2_profiles/SMB.md
Normal 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.
|
||||
39
documentation-payload/apollo/c2_profiles/TCP.md
Normal 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.
|
||||
18
documentation-payload/apollo/c2_profiles/_index.md
Normal 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 %}}
|
||||
44
documentation-payload/apollo/c2_profiles/websocket.md
Normal 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.
|
||||
84
documentation-payload/apollo/commands/_index.md
Normal file
@@ -0,0 +1,84 @@
|
||||
+++
|
||||
title = "Commands"
|
||||
chapter = true
|
||||
weight = 15
|
||||
pre = "<b>2. </b>"
|
||||
+++
|
||||
|
||||

|
||||
|
||||
## 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/)
|
||||
40
documentation-payload/apollo/commands/assembly_inject.md
Normal 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)
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
|
||||

|
||||
|
||||
## MITRE ATT&CK Mapping
|
||||
|
||||
- T1055
|
||||
15
documentation-payload/apollo/commands/blockdlls.md
Normal 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]
|
||||
```
|
||||
34
documentation-payload/apollo/commands/cat.md
Normal 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
|
||||

|
||||
#### 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
|
||||
42
documentation-payload/apollo/commands/cd.md
Normal 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
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
38
documentation-payload/apollo/commands/cp.md
Normal 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
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
42
documentation-payload/apollo/commands/dcsync.md
Normal 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)
|
||||
46
documentation-payload/apollo/commands/download.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
|
||||
## MITRE ATT&CK Mapping
|
||||
|
||||
- T1020
|
||||
- T1030
|
||||
- T1041
|
||||
48
documentation-payload/apollo/commands/execute_assembly.md
Normal 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
|
||||
|
||||

|
||||
|
||||
#### 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)
|
||||
53
documentation-payload/apollo/commands/execute_coff.md
Normal 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
|
||||
|
||||

|
||||
|
||||
#### 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)
|
||||
49
documentation-payload/apollo/commands/execute_pe.md
Normal 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
|
||||

|
||||
|
||||
#### 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)
|
||||
17
documentation-payload/apollo/commands/exit.md
Normal 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.
|
||||
@@ -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`
|
||||
|
||||
|
||||

|
||||
21
documentation-payload/apollo/commands/getprivs.md
Normal 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.
|
||||
19
documentation-payload/apollo/commands/ifconfig.md
Executable 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
|
||||
BIN
documentation-payload/apollo/commands/images/artifacts.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
documentation-payload/apollo/commands/images/assembly_inject.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 30 KiB |
BIN
documentation-payload/apollo/commands/images/cat.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
documentation-payload/apollo/commands/images/cd.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
documentation-payload/apollo/commands/images/cp.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/cp01.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
documentation-payload/apollo/commands/images/download.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/download01.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
documentation-payload/apollo/commands/images/download02.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
documentation-payload/apollo/commands/images/execute_pe.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/filebrowser.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/inject.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
documentation-payload/apollo/commands/images/inline_assembly.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
documentation-payload/apollo/commands/images/jobs.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
documentation-payload/apollo/commands/images/keylog01.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
documentation-payload/apollo/commands/images/keylog_inject.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
documentation-payload/apollo/commands/images/kill.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
documentation-payload/apollo/commands/images/link.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
documentation-payload/apollo/commands/images/load.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
documentation-payload/apollo/commands/images/ls01.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
documentation-payload/apollo/commands/images/ls02.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
documentation-payload/apollo/commands/images/make_token.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/mimikatz.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
documentation-payload/apollo/commands/images/mkdir.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
documentation-payload/apollo/commands/images/mv.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/net_dclist.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
documentation-payload/apollo/commands/images/net_localgroup.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 14 KiB |
BIN
documentation-payload/apollo/commands/images/net_shares.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
documentation-payload/apollo/commands/images/powerpick.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
documentation-payload/apollo/commands/images/powerpick01.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
documentation-payload/apollo/commands/images/powershell.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
documentation-payload/apollo/commands/images/ppid.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
documentation-payload/apollo/commands/images/printspoofer.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
documentation-payload/apollo/commands/images/ps.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
documentation-payload/apollo/commands/images/ps_full.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
documentation-payload/apollo/commands/images/ps_full02.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/ps_full03.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
documentation-payload/apollo/commands/images/psexec01.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
documentation-payload/apollo/commands/images/psinject.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
documentation-payload/apollo/commands/images/reg_query.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/reg_query2.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/reg_query_disp.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
BIN
documentation-payload/apollo/commands/images/reg_write_value.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/register_file.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
documentation-payload/apollo/commands/images/rm.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
documentation-payload/apollo/commands/images/run.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
documentation-payload/apollo/commands/images/sc_create.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
documentation-payload/apollo/commands/images/sc_delete.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
documentation-payload/apollo/commands/images/sc_modify.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
documentation-payload/apollo/commands/images/sc_query.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/sc_start.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
documentation-payload/apollo/commands/images/sc_stop.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/shinject.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
documentation-payload/apollo/commands/images/socks.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
documentation-payload/apollo/commands/images/spawnto_x64.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/spawnto_x86.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
documentation-payload/apollo/commands/images/unlink.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
documentation-payload/apollo/commands/images/upload.png
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
documentation-payload/apollo/commands/images/whoami.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
32
documentation-payload/apollo/commands/inject.md
Normal 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)
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
50
documentation-payload/apollo/commands/inline_assembly.md
Normal 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
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
16
documentation-payload/apollo/commands/jobkill.md
Normal 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]
|
||||
```
|
||||
|
||||

|
||||
19
documentation-payload/apollo/commands/jobs.md
Normal 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.
|
||||
|
||||

|
||||
42
documentation-payload/apollo/commands/keylog_inject.md
Normal 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.
|
||||
|
||||

|
||||
27
documentation-payload/apollo/commands/kill.md
Normal 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
|
||||
47
documentation-payload/apollo/commands/link.md
Normal 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
|
||||
78
documentation-payload/apollo/commands/listpipes.md
Normal file
@@ -0,0 +1,78 @@
|
||||
+++
|
||||
title = "listpipes"
|
||||
chapter = false
|
||||
weight = 150
|
||||
hidden = false
|
||||
+++
|
||||
|
||||
## Summary
|
||||
The `listpipes` function enumerates all named pipes on the local Windows host using the `FindFirstFileW` API on the `\\.\\pipe\\*` namespace. Named pipes are commonly used for inter-process communication (IPC), and this function helps discover active communication endpoints used by system services, applications, or malicious software.
|
||||
|
||||
- **Needs Admin:** False
|
||||
- **Version:** 1
|
||||
- **Author:** @ToweringDragoon
|
||||
|
||||
### Arguments
|
||||
This command takes no arguments.
|
||||
|
||||
## Usage
|
||||
### Example: Listing Named Pipes on the Local Machine
|
||||
**Command:**
|
||||
```c
|
||||
listpipes
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```plaintext
|
||||
Found 56 named pipes:
|
||||
InitShutdown
|
||||
lsass
|
||||
ntsvcs
|
||||
scerpc
|
||||
spoolss
|
||||
wkssvc
|
||||
srvsvc
|
||||
...
|
||||
```
|
||||
|
||||
## MITRE ATT&CK Mapping
|
||||
- **T1083** - File and Directory Discovery (As named pipes are part of the Windows object namespace)
|
||||
|
||||
## Detailed Summary
|
||||
The `listpipes` task queries the Windows named pipe namespace using the `FindFirstFileW("\\\\.\\pipe\\*")` API. This method allows the agent to list active named pipe objects from user mode without relying on NT Native API calls like `NtQueryDirectoryObject`, which often fail or require elevated access.
|
||||
|
||||
### Functional Steps:
|
||||
|
||||
1. **Initialize Pipe Search:**
|
||||
- Calls `FindFirstFileW("\\.\\pipe\\*")` to begin enumeration of named pipe objects.
|
||||
|
||||
2. **Iterate Through Pipe Names:**
|
||||
- Uses `FindNextFileW` in a loop to collect all entries under the `\\.\\pipe\\` namespace.
|
||||
|
||||
3. **Filter Results:**
|
||||
- Trims null terminators.
|
||||
- Filters out invalid or malformed names (though the default implementation includes everything unless manually filtered).
|
||||
|
||||
4. **Return Results:**
|
||||
- Aggregates all valid pipe names and returns a summary string in the format: `Found X named pipes:` followed by newline-separated pipe names.
|
||||
|
||||
5. **Error Handling:**
|
||||
- If `FindFirstFileW` fails, the function throws an exception with the associated Win32 error code.
|
||||
|
||||
## APIs Used and Their Purposes
|
||||
| API | Purpose | DLL | Documentation |
|
||||
|------|---------|-----|--------------|
|
||||
| `FindFirstFileW` | Begins enumeration of pipe names under `\\.\\pipe\\` | kernel32.dll | [FindFirstFileW](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findfirstfilew) |
|
||||
| `FindNextFileW` | Continues enumeration of named pipes | kernel32.dll | [FindNextFileW](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findnextfilew) |
|
||||
| `FindClose` | Closes the pipe enumeration handle | kernel32.dll | [FindClose](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-findclose) |
|
||||
| `Marshal.GetLastWin32Error` | Captures last error code after Win32 API failure | mscorlib.dll | [GetLastWin32Error](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.getlastwin32error) |
|
||||
|
||||
## Considerations
|
||||
- **Permissions:** This command does not require administrative privileges. However, access to specific pipes may still be restricted based on ACLs.
|
||||
- **OPSEC:** Enumerating named pipes may cause suspicious handle access logs to appear in security monitoring tools or EDRs.
|
||||
- **Performance:** This is a lightweight operation and generally completes quickly unless the system has an extremely large number of named pipes.
|
||||
|
||||
## References
|
||||
- [Windows Named Pipes](https://learn.microsoft.com/en-us/windows/win32/ipc/named-pipes)
|
||||
- [NT Object Namespace](https://learn.microsoft.com/en-us/windows/win32/sysinfo/object-namespaces)
|
||||
- [Sysinternals PipeList Tool](https://learn.microsoft.com/en-us/sysinternals/downloads/pipelist)
|
||||