One way you could do it:
//One possible way:
Set socket points midway between the bone locations.
Then calculate the hitbox extents, basically encapsulate the mesh area of your body section.
Finally do a, SweepSingleByChannel using a box shape that you created:
// Perform trace to retrieve hit info
FCollisionQueryParams TraceParams(MeleeFireTag, true, this);
TraceParams.bTraceAsyncScene = true;
TraceParams.bReturnPhysicalMaterial = true;
TraceParams.AddIgnoredActor(this);
FHitResult Hit(ForceInit);
//Sweep a box that is matched to the claw
bool const bHit = GetWorld()->SweepSingleByChannel(Hit, StartTrace, EndTrace, Orientation, COLLISION_TRACE_WEAPON, FCollisionShape::MakeBox(BoxHalfSize), TraceParams);
You will need to store each location for each trace, then use that as start trace for the next trace for the next tick.
Thats a general way of doing and would be matched to the bones no matter the animation.
There are probably several other ways, but that one is easy to get going. Hope that help =)