Algorithm
You are looking for a way to determine if a point lies inside a concave hull.
This can be done by extending the Point in Polygon algorithm to three dimensions.
The idea is that you cast a ray through the point and calculate the intersections with the hull (polygons) of your volume. If the number of ray-triangle intersections on either side of the point is odd, it lies inside of the volume.
If performance is an issue, simplified bounding volumes can still be useful. If calculating ray-polygon intersections is expensive, you would first check if the point lies inside an approximated hull for the mesh, that has a lower cost on performance (e.g. bounding boxes, convex hulls). That way you can discard points early.
Here is another detailed explanation of the Point in Polygon algorithm and an implementation in C:
Chosing the right programming environment
I am not sure why exactly you want to use XNA or even Unity for this task. Of course, both offer the ability to load 3D models, but there are definitely simpler and more efficient alternatives.
For the aforementioned algorithm you need access to the vertex positions and triangle definitions of the model, nothing more. If FBX is not a requirement, I would suggest looking into the Wavefront OBJ file format. It is a text based format, easy to understand/parse and supported by almost all professional 3D modelling applications.
If FBX is required, you could still try to parse them yourself or just use an existing 3D converter.