mirror of
https://github.com/8damon/Blackbird-Platform
synced 2026-06-21 13:41:12 +00:00
424 lines
25 KiB
XML
424 lines
25 KiB
XML
<Window x:Class="BlackbirdInterface.DirectSyscallSuspectWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="Direct Syscall Suspects"
|
|
Height="760"
|
|
Width="1360"
|
|
MinHeight="580"
|
|
MinWidth="1080"
|
|
WindowStartupLocation="CenterOwner"
|
|
WindowStyle="None"
|
|
ResizeMode="CanResize"
|
|
Background="{DynamicResource WinBgBrush}"
|
|
UseLayoutRounding="True"
|
|
SnapsToDevicePixels="True"
|
|
TextOptions.TextFormattingMode="Display"
|
|
TextOptions.TextRenderingMode="ClearType">
|
|
<Window.Resources>
|
|
<Style x:Key="SummaryLabelStyle" TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource WinMutedTextBrush}"/>
|
|
<Setter Property="FontSize" Value="11"/>
|
|
<Setter Property="Margin" Value="0,0,8,0"/>
|
|
<Setter Property="VerticalAlignment" Value="Top"/>
|
|
</Style>
|
|
|
|
<Style x:Key="SummaryValueStyle" TargetType="TextBlock">
|
|
<Setter Property="FontSize" Value="12"/>
|
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
|
<Setter Property="VerticalAlignment" Value="Top"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FilterTextBoxStyle" TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
|
|
<Setter Property="Background" Value="{DynamicResource WinHeaderBrush}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource WinBorderBrush}"/>
|
|
<Setter Property="Width" Value="260"/>
|
|
<Setter Property="MinHeight" Value="26"/>
|
|
<Setter Property="Margin" Value="0,0,8,0"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Padding" Value="8,3"/>
|
|
</Style>
|
|
|
|
<Style x:Key="FilterComboStyle" TargetType="ComboBox" BasedOn="{StaticResource {x:Type ComboBox}}">
|
|
<Setter Property="Background" Value="{DynamicResource WinHeaderBrush}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource WinTextBrush}"/>
|
|
<Setter Property="BorderBrush" Value="{DynamicResource WinBorderBrush}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Padding" Value="6,2"/>
|
|
<Setter Property="MinHeight" Value="26"/>
|
|
<Setter Property="Margin" Value="0,0,8,0"/>
|
|
<Setter Property="IsEditable" Value="False"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ComboBox">
|
|
<Grid>
|
|
<Border x:Name="SelectorBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"/>
|
|
<ContentPresenter Margin="8,1,26,1"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Left"
|
|
Content="{TemplateBinding SelectionBoxItem}"
|
|
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
|
|
ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}"
|
|
IsHitTestVisible="False"/>
|
|
<Path HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Margin="0,0,8,0"
|
|
Data="M 0 0 L 8 0 L 4 4 Z"
|
|
Fill="{DynamicResource WinTextBrush}"
|
|
IsHitTestVisible="False"/>
|
|
<ToggleButton Background="Transparent"
|
|
BorderThickness="0"
|
|
Focusable="False"
|
|
IsChecked="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"
|
|
ClickMode="Press">
|
|
<ToggleButton.Template>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Border Background="Transparent"
|
|
BorderBrush="Transparent"
|
|
BorderThickness="0"/>
|
|
</ControlTemplate>
|
|
</ToggleButton.Template>
|
|
</ToggleButton>
|
|
<Popup x:Name="PART_Popup"
|
|
Placement="Bottom"
|
|
IsOpen="{TemplateBinding IsDropDownOpen}"
|
|
Focusable="False"
|
|
AllowsTransparency="True"
|
|
PopupAnimation="Fade">
|
|
<Border Margin="0,2,0,0"
|
|
MinWidth="{Binding ActualWidth, RelativeSource={RelativeSource TemplatedParent}}"
|
|
Background="{DynamicResource WinPanelBrush}"
|
|
BorderBrush="{DynamicResource WinBorderBrush}"
|
|
BorderThickness="1">
|
|
<ScrollViewer MaxHeight="280"
|
|
CanContentScroll="True"
|
|
Background="{DynamicResource WinPanelBrush}"
|
|
Foreground="{DynamicResource WinTextBrush}"
|
|
BorderThickness="0">
|
|
<StackPanel IsItemsHost="True"/>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="SelectorBorder" Property="BorderBrush" Value="{DynamicResource WinAccentBrush}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsDropDownOpen" Value="True">
|
|
<Setter TargetName="SelectorBorder" Property="BorderBrush" Value="{DynamicResource WinAccentBrush}"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.6"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="FilterComboItemStyle" TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
|
|
<Setter Property="Background" Value="{DynamicResource WinPanelBrush}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource WinTextBrush}"/>
|
|
<Setter Property="Padding" Value="8,3"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsHighlighted" Value="True">
|
|
<Setter Property="Background" Value="#FF2A2A2A"/>
|
|
</Trigger>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Background" Value="#33323232"/>
|
|
<Setter Property="Foreground" Value="#FFF1F1F1"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Window.Resources>
|
|
|
|
<Grid Margin="0">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<Border Grid.Row="0"
|
|
Style="{DynamicResource SecondaryWindowTitleBarBorderStyle}"
|
|
MouseLeftButtonDown="TitleBar_MouseLeftButtonDown">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="Auto"/>
|
|
</Grid.ColumnDefinitions>
|
|
<StackPanel Grid.Column="0">
|
|
<TextBlock x:Name="HeaderBlock"
|
|
Style="{DynamicResource SecondaryWindowTitleTextStyle}"
|
|
Text="Direct Syscall Suspects"/>
|
|
<TextBlock x:Name="SummaryBlock"
|
|
Style="{DynamicResource SecondaryWindowSubtitleTextStyle}"
|
|
Text="No suspect entries"/>
|
|
</StackPanel>
|
|
<StackPanel Grid.Column="1"
|
|
Orientation="Horizontal"
|
|
VerticalAlignment="Top">
|
|
<Button Style="{DynamicResource SecondaryWindowTitleGlyphButtonStyle}"
|
|
Content=""
|
|
Click="WindowMinimize_Click"/>
|
|
<Button Style="{DynamicResource SecondaryWindowTitleGlyphButtonStyle}"
|
|
Content=""
|
|
Click="WindowMaximize_Click"/>
|
|
<Button Style="{DynamicResource SecondaryWindowTitleGlyphButtonStyle}"
|
|
Tag="Close"
|
|
Content=""
|
|
Click="WindowClose_Click"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Border Grid.Row="1"
|
|
Margin="8,8,8,0"
|
|
Style="{DynamicResource SecondaryWindowSurfaceBorderStyle}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="96"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="96"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="96"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Style="{StaticResource SummaryLabelStyle}" Text="Summary"/>
|
|
<TextBlock x:Name="DetectionSummaryBlock" Grid.Row="0" Grid.Column="1" Style="{StaticResource SummaryValueStyle}" FontWeight="SemiBold"/>
|
|
<TextBlock Grid.Row="0" Grid.Column="2" Style="{StaticResource SummaryLabelStyle}" Text="Time Window"/>
|
|
<TextBlock x:Name="WindowRangeBlock" Grid.Row="0" Grid.Column="3" Style="{StaticResource SummaryValueStyle}"/>
|
|
<TextBlock Grid.Row="0" Grid.Column="4" Style="{StaticResource SummaryLabelStyle}" Text="Entries"/>
|
|
<TextBlock x:Name="EntryCountBlock" Grid.Row="0" Grid.Column="5" Style="{StaticResource SummaryValueStyle}"/>
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Style="{StaticResource SummaryLabelStyle}" Margin="0,4,8,0" Text="Groups"/>
|
|
<TextBlock x:Name="GroupCountBlock" Grid.Row="1" Grid.Column="1" Style="{StaticResource SummaryValueStyle}" Margin="0,4,0,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="2" Style="{StaticResource SummaryLabelStyle}" Margin="0,4,8,0" Text="Top Actor"/>
|
|
<TextBlock x:Name="TopActorBlock" Grid.Row="1" Grid.Column="3" Style="{StaticResource SummaryValueStyle}" Margin="0,4,0,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="4" Style="{StaticResource SummaryLabelStyle}" Margin="0,4,8,0" Text="Top Target"/>
|
|
<TextBlock x:Name="TopTargetBlock" Grid.Row="1" Grid.Column="5" Style="{StaticResource SummaryValueStyle}" Margin="0,4,0,0"/>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<Border Grid.Row="2"
|
|
Margin="8,8,8,0"
|
|
Style="{DynamicResource SecondaryWindowFilterBarStyle}">
|
|
<WrapPanel>
|
|
<TextBox x:Name="SearchBox"
|
|
Style="{StaticResource FilterTextBoxStyle}"
|
|
ToolTip="Search syscall, actor, target, detection, context"
|
|
TextChanged="SearchFilter_Changed"/>
|
|
<ComboBox x:Name="SeverityFilterBox"
|
|
Style="{StaticResource FilterComboStyle}"
|
|
ItemContainerStyle="{StaticResource FilterComboItemStyle}"
|
|
Width="150"
|
|
SelectionChanged="SearchFilter_Changed"/>
|
|
<CheckBox x:Name="GroupBySyscallToggle"
|
|
Content="Group by syscall"
|
|
VerticalAlignment="Center"
|
|
Margin="0,4,8,0"
|
|
IsChecked="True"
|
|
Checked="GroupBySyscallToggle_Changed"
|
|
Unchecked="GroupBySyscallToggle_Changed"/>
|
|
</WrapPanel>
|
|
</Border>
|
|
|
|
<Grid Grid.Row="3" Margin="8,8,8,8">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="2.25*"/>
|
|
<ColumnDefinition Width="8"/>
|
|
<ColumnDefinition Width="1.75*"/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<Border Grid.Column="0"
|
|
Style="{DynamicResource SecondaryWindowSurfaceBorderStyle}"
|
|
Padding="0">
|
|
<DataGrid x:Name="SuspectsGrid"
|
|
Style="{DynamicResource SecondaryDenseDataGridStyle}"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="True"
|
|
CanUserAddRows="False"
|
|
CanUserDeleteRows="False"
|
|
CanUserResizeRows="False"
|
|
CanUserSortColumns="True"
|
|
RowHeaderWidth="0"
|
|
ScrollViewer.CanContentScroll="True"
|
|
VirtualizingPanel.IsVirtualizing="True"
|
|
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
|
|
VirtualizingPanel.VirtualizationMode="Recycling"
|
|
EnableRowVirtualization="True"
|
|
IsSynchronizedWithCurrentItem="False"
|
|
SelectedIndex="-1"
|
|
SelectionChanged="SuspectsGrid_SelectionChanged">
|
|
<DataGrid.RowStyle>
|
|
<Style TargetType="DataGridRow" BasedOn="{StaticResource AppDataGridRowStyle}">
|
|
<Setter Property="Background" Value="{Binding RowBackground}"/>
|
|
<Setter Property="BorderBrush" Value="{Binding RowBorder}"/>
|
|
<Setter Property="BorderThickness" Value="0,0,0,1"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.RowStyle>
|
|
<DataGrid.GroupStyle>
|
|
<GroupStyle>
|
|
<GroupStyle.ContainerStyle>
|
|
<Style TargetType="{x:Type GroupItem}">
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type GroupItem}">
|
|
<Border BorderBrush="{DynamicResource WinSubtleBorderBrush}"
|
|
BorderThickness="0,0,0,1">
|
|
<Expander IsExpanded="False"
|
|
HorizontalAlignment="Stretch"
|
|
Background="Transparent">
|
|
<Expander.Header>
|
|
<Grid Margin="6,2,6,2">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="138"/>
|
|
<ColumnDefinition Width="72"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0"
|
|
FontWeight="SemiBold"
|
|
Text="{Binding Name}"
|
|
TextTrimming="CharacterEllipsis"/>
|
|
<TextBlock Grid.Column="1"
|
|
Text="{Binding Items[0].TimestampUtc, StringFormat=HH:mm:ss.fff}"
|
|
Foreground="{DynamicResource WinMutedTextBrush}"/>
|
|
<TextBlock Grid.Column="2"
|
|
HorizontalAlignment="Right"
|
|
FontWeight="SemiBold"
|
|
Foreground="{DynamicResource WinMutedTextBrush}"
|
|
Text="{Binding ItemCount, StringFormat={}x{0}}"/>
|
|
</Grid>
|
|
</Expander.Header>
|
|
<ItemsPresenter/>
|
|
</Expander>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</GroupStyle.ContainerStyle>
|
|
</GroupStyle>
|
|
</DataGrid.GroupStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Time" Width="112" Binding="{Binding TimestampUtc, StringFormat=HH:mm:ss.fff}"/>
|
|
<DataGridTextColumn Header="Syscall" Width="1.05*" Binding="{Binding SyscallLabel}"/>
|
|
<DataGridTextColumn Header="Actor" Width="*" Binding="{Binding Actor}"/>
|
|
<DataGridTextColumn Header="Target" Width="*" Binding="{Binding Target}"/>
|
|
<DataGridTextColumn Header="Severity" Width="88" Binding="{Binding Severity}"/>
|
|
<DataGridTextColumn Header="Detection" Width="1.2*" Binding="{Binding Detection}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Border>
|
|
|
|
<Border Grid.Column="2"
|
|
Style="{DynamicResource SecondaryWindowSurfaceBorderStyle}"
|
|
Padding="0">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
Padding="0"
|
|
CanContentScroll="False">
|
|
<Border Padding="8" Background="Transparent">
|
|
<StackPanel>
|
|
<TextBlock Text="Details Inspector"
|
|
Style="{DynamicResource SecondaryWindowTitleTextStyle}"
|
|
FontSize="12"/>
|
|
|
|
<TextBlock Text="Overview"
|
|
Style="{DynamicResource SecondaryWindowSectionHeaderStyle}"
|
|
Margin="0,8,0,4"/>
|
|
<TextBlock x:Name="OverviewBlock"
|
|
TextWrapping="Wrap"
|
|
Foreground="{DynamicResource WinMutedTextBrush}"/>
|
|
|
|
<TextBlock Text="Arguments / Context"
|
|
Style="{DynamicResource SecondaryWindowSectionHeaderStyle}"
|
|
Margin="0,8,0,4"/>
|
|
<DataGrid x:Name="ArgumentsGrid"
|
|
Style="{DynamicResource SecondaryDenseDataGridStyle}"
|
|
Margin="0,0,0,8"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="True"
|
|
CanUserReorderColumns="False"
|
|
CanUserSortColumns="False"
|
|
MinHeight="100"
|
|
MaxHeight="220"
|
|
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Field" Width="140" Binding="{Binding Key}"/>
|
|
<DataGridTextColumn Header="Value" Width="*" Binding="{Binding Value}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<TextBlock Text="Execution Context"
|
|
Style="{DynamicResource SecondaryWindowSectionHeaderStyle}"
|
|
Margin="0,0,0,4"/>
|
|
<DataGrid x:Name="ContextGrid"
|
|
Style="{DynamicResource SecondaryDenseDataGridStyle}"
|
|
Margin="0,0,0,8"
|
|
AutoGenerateColumns="False"
|
|
IsReadOnly="True"
|
|
CanUserReorderColumns="False"
|
|
CanUserSortColumns="False"
|
|
MinHeight="100"
|
|
MaxHeight="220"
|
|
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Field" Width="140" Binding="{Binding Key}"/>
|
|
<DataGridTextColumn Header="Value" Width="*" Binding="{Binding Value}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<Button x:Name="OpenDisassemblyButton"
|
|
Content="Copy Disassembly"
|
|
MinWidth="148"
|
|
MinHeight="26"
|
|
HorizontalAlignment="Left"
|
|
Margin="0,0,0,8"
|
|
Click="OpenDisassemblyButton_Click"/>
|
|
|
|
<Expander Header="Raw Event" IsExpanded="False">
|
|
<Border Margin="0,6,0,0"
|
|
MinHeight="120"
|
|
Background="{DynamicResource WinHeaderBrush}"
|
|
BorderBrush="{DynamicResource WinBorderBrush}"
|
|
BorderThickness="1">
|
|
<TextBox x:Name="RawBox"
|
|
BorderThickness="0"
|
|
Padding="8"
|
|
IsReadOnly="True"
|
|
TextWrapping="Wrap"
|
|
VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
MinHeight="120"
|
|
AcceptsReturn="True"
|
|
FontFamily="Consolas"
|
|
FontSize="12"
|
|
Background="Transparent"
|
|
Foreground="{DynamicResource WinTextBrush}"/>
|
|
</Border>
|
|
</Expander>
|
|
</StackPanel>
|
|
</Border>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
</Window>
|
|
|
|
|